@EntityJPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야하며@Entity가 붙은 클래스는 JPA가 관리하며, 엔티티라고 부름@Entity 속성1) name : JPA에서 사용할 엔티티 이름을 지정하며, 기본값은 클래스 이름을 그대로 사용하므로 충돌되지 않도록 주의@Entity 적용 시 주의 사항1) 기본 생성자는 필수이며 하나도 없다면 자동으로 생성 (파라미터가 없는 public 또는 protected 생성자)2) final, enum, interface, inner 클래스에는 사용 불가3) 저장할 필드에 final을 사용하면 안 됨public Member() {} // 자동으로 생성된 기본 생성자// ================= //public Member()..
엔티티 매니저 팩토리와 엔티티 매니저엔티티 매니저 팩토리는 엔티티 매니저를 만드는 공장으로,여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유 가능엔티티 매니저란 엔티티를 관리하는 관리자로, 엔티티를 저장, 수정, 삭제, 조회하는 등 엔티티와 관련된 모든 일을 처리하며여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유 금지데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 엔티티 매니저 팩토리를 하나만 생성이후 필요할 때마다 엔티티 매니저 팩토리에서 엔티티 매니저를 생성// JpaMain.java// META-INT/persistence.xml에 있는 정보를 바탕으로 엔티티 매니저 팩토리 생성// 공장 만들기, 비용이 아주 많이 듦EntityManagerF..
이클립스 설치와 프로젝트 불러오기JPA를 사용해서 테이블 하나를 등록/수정/삭제/조회하는 간단한 JPA 애플리케이션 생성이클립스 대신 인텔리제이 사용으로 생략 예제 프로젝트 내려받기 경로 인텔리제이에 예제 프로젝트 설정하기H2 데이터베이스 설치H2 데이터베이스 설치 후 bin/h2.bat를 실행하여 H2 데이터베이스를 서버 모드로 실행참고로 H2 데이터베이스는 JVM 메모리 안에서 실행되는 임베디드 모드와 실제 데이터베이스처럼 별도의 서버를 띄워서 동작하는 서버 모드가 존재H2 데이터베이스를 서버 모드로 실행한 후 웹 브라우저에서 http://127.0.0.1:8082로 H2 데이터베이스에 접속예제 MEMBER 테이블 생성-- member.sqlCREATE TABLE MEMBER (..
JPA 소개이전의 데이터 중심의 모델에서 벗어나 객체 중심의 개발을 위해객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 ORM (Object Relational Mapping) 프레임워크 사용JPA는 자바 전영의 ORM 기술 표준으로 지루하고 반복적인 CRUD SQL을 알아서 처리해줄 뿐만 아니라객체 모델링과 관계형 데이터베이스 사이의 차이점도 해결하고 자동으로 SQL을 만들어서 실행이로 인해 생산성과 유지보수가 확연히 좋아졌으며 테스트를 작성하기도 편리해져 버그도 많이 줄어듦또한 데이터베이스 정책 변경에 영향이 적으므로 효율적SQL을 직접 다룰 때 발생하는 문제점데이터베이스에 데이터를 관리하려면 SQL을 사용해야 하며, 자바로 작성한 애플리케이션은 JDBC API를 사용해서 SQL을 데이터베..
AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가 // main/java/hello/hellospring/service/MemberService.java public class MemberService { ... // 회원 가입 public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); // 중복 회원 검증 메소드 memberRepository.save(member); return member.getId(); } finally { long finish = System.currentTimeMill..
H2 데이터베이스 설치 1. 1.4.200 버전 h2 데이터베이스 설치 2. h2.bat 실행 3. 데이터베이스 파일 생성 : 내 홈에 있는 경로로 파일 경로 설정 4. 홈 디렉토리에 test.mv.db 파일 생성 확인 5. 파일 확인 이후부터는 jdbc:h2:tcp://localhost/~/test 로 접속 파일을 직접 접근하는 것이 아니라, 소켓을 통해 접근하게 되므로 여러 곳에서 충돌없이 접근 가능 6. Member 테이블 생성/조회/삽입 // 생성 create table member ( id bigint generated by default as identity, // DB가 id 값 자동 생성 name varchar(255), primary key (id) ); // 조회 select * fro..
회원가입 API 생성 간단한 유틸리티 메소드를 만들기 위해 SecurityUtil 클래스 생성 // main/java/me/gagyeong/tutorial/util/SecurityUtil.java public class SecurityUtil { // 간단한 유틸리티 메소드를 만들기 위한 클래스 private static final Logger logger = LoggerFactory.getLogger(SecurityUtil.class); private SecurityUtil() { } // SecurityContext의 Authentication 객체를 이용해 username을 리턴해주는 유틸성 메소드 // SecurityContext에 Authentication 객체가 저장되는 시점은 JwtFilte..
외부와의 통신에 사용할 DTO 클래스 생성 로그인 시 사용할 LoginDto 클래스 생성 // main/java/me/gagyeong/tutorial/dto/LoginDto.java @Getter // Lombok 어노테이션들 @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class LoginDto { // 로그인 시 사용할 클래스 생성 @NotNull @Size(min = 3, max = 50) // @valid 관련 어노테이션 추가 private String username; @NotNull @Size(min = 3, max = 100) // @valid 관련 어노테이션 추가 private String password; } 토큰 정보를..