
JPQL 기본 함수 • CONCAT • SUBSTRING • TRIM • LOWER, UPPER • LENGTH • LOCATE • ABS, SQRT, MOD • SIZE, INDEX(JPA 용도) GPT를 통한 설명 CONCAT: 문자열을 연결하는 함수입니다. 예를 들어, CONCAT('Hello', ' ', 'World')는 "Hello World"를 반환합니다. SUBSTRING: 문자열의 일부를 추출하는 함수입니다. SUBSTRING(expression, start, length) 형식으로 사용됩니다. expression은 대상 문자열이고, start는 추출을 시작할 위치를 나타내며, length는 추출할 문자의 수를 나타냅니다. TRIM: 문자열의 앞뒤 공백을 제거하는 함수입니다. TRIM([L..

조건식 - CASE 식 학생요금 / 경로요금 예제 (기본 CASE 식) JpqlMain 쿼리 식을 따로 떼서 보면 이렇다 String query = "select " + "case when m.age = 60 then '경로요금' " + " else '일반요금' " + "end " + "from Member m"; 전체 코드는 public class JpqlMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.g..

JPQL 타입 표현 예시들 MemberType public enum MemberType { ADMIN, USER } Member에 필드로 추가 @Enumerated(EnumType.STRING) private MemberType type; JpqlMain 수정 public class JpqlMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Tea..

조인 - ON 절 1. 조인 대상 필터링 예제 JpqlMain public class JpqlMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { // 팀 먼저 저장 Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.s..

조인 SQL의 조인과 양상은 비슷하나 얘는 엔티티 중심으로 동작한다. 약간 객체 스타일로 조인 문법이 나간다. 연관있는 것을 . 으로 표현한다. 간단히 복기하고 넘어가면 내부조인은 값이 없으면 그대로 안 나오지만, 외부조인은 한쪽의 값이라도 있으면 없는 쪽은 빠진 채로 출력됨. 예제 Member에 Team getter, setter 먼저 추가 후, Team에도 Member의 getter, setter 추가 후 작업 Member에 Lazy로 전략 명기 @ManyToOne(fetch = FetchType.LAZY) // 중요. @JoinColumn(name = "TEAM_ID") private Team team; Member - 연관관계 편의 메서드 추가 public void changeTeam(Team t..

페이징 API order by 가 꼭 들어가야 Sorting이 되면서 페이징이 제대로 되는지 확인 가능하므로 중요하다. 예제 일단 귀찮으니 Member에 toString() 만들고 시작. @Override public String toString() { return "Member{" + "id=" + id + ", username='" + username + '\'' + ", age=" + age + '}'; } JpaMain public class JpqlMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em..

프로젝션 1. SELECT m FROM MEMBER m -> 엔티티 프로젝션 JpqlMain public class JpqlMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Member member = new Member(); member.setUsername("member1"); member.setAge(10); em.persist(member..