PROGRAMMING 7

[JPA] 엔티티 설계 시 주의점

내가 까먹을까봐 쓰는 엔티티 설계 시 주의점엔티티에는 가급적 Setter를 사용하지 말자Setter가 모두 열려있다? → 변경 포인트가 너무 많아서, 유지보수가 어렵다.모든 연관 관계는 지연로딩으로 설정즉시로딩( `EAGER` ) 은 예측이 어렵고, 어떤 SQL이 실행될 지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다.실무에서 모든 연관 관계는 지연로딩(`LAZY`)으로 설정해야 한다.연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다.@XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다. ex) LAZY 로딩이 트랜젝션 밖에서 안되는 이슈, LAZY 로딩이 excep..

PROGRAMMING/JPA 2024.06.13

[JPA] spring could not prepare statement; sql [values nextval for hibernate_sequence]; nested exception is org.hibernate.exception.sqlgrammarexception: could not prepare statement

JPA 강의를 듣던 중 발생한 에러해결 방법 1@GeneratedValue(strategy = GenerationType.AUTO)spring could not prepare statement; sql [values nextval for hibernate_sequence]; nested exception is org.hibernate.exception.sqlgrammarexception: could not prepare statement를 해결하다가 커뮤니티에도 답변이 없길래 오랜만에 블로그에 씀spring boot 버전 : v2.7.4h2 버전 : 2.2.2241. MEMBER 엔티티2. MemberRepository (TEST) 이렇게 하고 실행하면 뭐 이런 에러가 뜬다.(ㅎ 당연함)  org.spr..

PROGRAMMING/JPA 2024.06.12

[Java 알고리즘] 특정 단어 뒤집기

문자열에서 알파벳 여부 확인 Q. 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력 package codingTest; import java.util.*; public class CodingTest_String_05 { public String solution (String str) { String answer = ""; char[] charArr = str.toCharArray(); int lt =0,rt = str.length()-1; while(lt

[Java 알고리즘] 단어 뒤집기

StringBuilder의 reverse() 사용 Q. N개의 단어가 주어지면 각 단어를 뒤집어 출력 package codingTest; import java.util.*; public class CodingTest_String_04 { public ArrayList solution(int n, String[] str){ ArrayList answer = new ArrayList(); for(String x : str) { String temp = new StringBuilder(x).reverse().toString(); answer.add(temp); } return answer; } public static void main(String[] args) { CodingTest_String_04 T =..

[Java 알고리즘] 문장속 단어

Q. 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력 1. 첫번째 방법(spilt 이용) public String solution(String str){ String answer = ""; int m = Integer.MIN_VALUE; String[] s = str.split(" "); for(String x : s) { //System.out.println(x); int len = x.length(); if(len > m) //만약 len이 integer의 최소값(=x)보다 크면 len에 최소값 대입 m = len; answer=x; } return answer; } public static void main(String[] args) { CodingTest_String_03 T = n..

[Java 알고리즘] 대소문자 변환

Q. 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력 package codingTest; import java.util.*; public class CodingTest_String_02 { public String Solution(String str) { String answer = ""; for(char x : str.toCharArray()) { if(Character.isLowerCase(x)) answer += Character.toUpperCase(x); else answer += Character.toLowerCase(x); } return answer; } public static void main(String[] args) { Coding..