일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인프런
- 스프링
- 자바
- AOP
- Spring Boot
- 스프링 핵심 기능
- transaction
- JDBC
- SpringBoot
- JPQL
- kotlin
- 그리디
- QueryDSL
- Servlet
- Exception
- Android
- jpa
- Greedy
- 백준
- 김영한
- http
- pointcut
- java
- springdatajpa
- spring
- db
- 알고리즘
- 스프링 핵심 원리
- Proxy
- Thymeleaf
- Today
- Total
목록인프런 (528)
개발자되기 프로젝트
1. 도메인 모델 2. Member package study.querydsl.entity; import lombok.*; import javax.persistence.*; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "t..
build.gradle에 아래와 같이 설정을 해주자. 1. plugin 추가 plugins { id 'org.springframework.boot' version '2.5.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" id 'java' } 2. 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-star..
1. Native Query 가급적 네이티브 쿼리는 사용하지 않는게 좋음, 정말 어쩔 수 없을 때 사용 최근에 나온 궁극의 방법 --> 스프링 데이터 Projections 활용 Repository @Query(value = "select * from member where userName = ?", nativeQuery = true) Member findByNativeQuery(String userName); Test Member result = memberRepository.findByNativeQuery("m1"); System.out.println("result = " + result); SQL select * from member where user_name = ? 2. 스프링 데이터 JPA 기반..
엔티티 대신에 DTO를 편리하게 조회할 때 사용 전체 엔티티가 아니라 딱 회원의 이름만 조회하고 싶은 경우! 1. closed Projection 인터페이스만 생성하면 구현체는 SpringDataJpa가 만듦. public interface UserNameOnly { String getUserName(); } 사용 방법 : 아래와 같이 return type으로 인터페이스를 지정해주면 됨. @Test public void projections(){ Team teamA = new Team("teamA"); em.persist(teamA); Member m1 = new Member("m1", 0, teamA); Member m2 = new Member("m2", 0, teamA); em.persist(m1);..
1. Query By Example 엔티티 자체를 검색 조건으로 사용 가능 엔티티로부터 Example 객체를 만들어 사용. 스프링에서 기본적으로 Example 파라미터를 받을 수 있도록 지원함. @Test public void queryByExample(){ Team teamA = new Team("teamA"); em.persist(teamA); Member m1 = new Member("m1", 0, teamA); Member m2 = new Member("m2", 0, teamA); em.persist(m1); em.persist(m2); em.flush(); em.clear(); //when //Probe Member member = new Member("m1"); //엔티티 자체가 검색조건 Ex..
1. SimpleJpaRepository @Repository @Transactional(readOnly = true) public class SimpleJpaRepository ...{ @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } } ... } SpringDataJpa의 구현체 @Repository 스프링 빈으로 등록 JDBC/JPA에서 예외가 터지면 Spring에서 사용할 수 있는 예외로 바꿔줌 하부 기술을 바꿔도 예외 처리 메커니즘이 동일하게 유지됨. @Transaction(r..
1. 도메인 클래스 컨버터 HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩해줌 쉽게말해 @Pathvariable로 id를 받으면 스프링이 id를 가지고 엔티티를 바인딩함. findMember : id를 파라미터로 받아 직접 member를 찾아옴. fimdMember2 : id를 파라미터로 받으면 스프링이 member와 바인딩함. @GetMapping("/members/{id}") public String findMember(@PathVariable("id") Long id){ Member member = memberRepository.findById(id).get(); return member.getUserName(); } @GetMapping("/members2/{id}") p..
1. Auditing 엔티티를 생성 및 변경할 때 변경한 사람과 시간을 추적하고 싶으면? 등록일 수정일 등록자 수정자 2. JPA 활용 JpaBaseEntity @MappedSuperclass Designates a class whose mapping information is applied to the entities that inherit from it. A mapped superclass has no separate table defined for it. 해당 annotation은 상속받는 엔티티에 매핑 정보를 전달할 클래스를 지정. 즉, 해당 annotation이 붙은 클래스의 속성 정보만 하위 클래스에 전달하여 하위클래스에서 사용할 수 있음. 해당 annotation이 붙은 클래스는 별도 tab..