-
[JPA] 다양한 연관 관계 매핑 ( N:1 / 1:N / 1:1 / N:M )DEV/JPA 2024. 4. 4. 03:43
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다. 강의 : 인프런 교육자 : 김영한 연관관계 매핑시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyYoMany 단방향, 양방향 테이블 : 외래키로 양쪽 조인 가능, 방향개념 없음 객체 : 참조용 필드가 있는 쪽으로만 참조 가능, 한쪽만 참조하면 단방향, 양쪽 서로 참조하면 양방향 연관관계의 주인 외래키를 관리하는 참조가 주인 주인의 반대편은 외래키에 영향을 주지않고 단순 조회만 가능 1. 다대일 (N:1) : 외래키있는곳에 객체 참조 걸어주기 1-1. 다대일 단방향 - 가장 많이 사용하는 연관관계 - 다대일의 반대는 일대다 1-2. 다대일 양방향 - 외래키가 있는 쪽이 연..
-
[JAVA] 제네릭스(Generics) / 열거형 (Enum)DEV/JAVA 2024. 4. 3. 18:36
1) 제네릭스란? : 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능 → 의도하지 않은 타입의 객체가 저장되는것을 막아주고, 저장된 객체를 꺼낼때 원래 타입과 다른 타입으로 잘못 형변환 되어 발생할 수 있는 오류를 줄여준다. 장점 타입 안정성 제공 타입체크와 형변환을 생략하여 코드가 간결해짐 2) 사용 방법 : 클래스와 메서드에 선언 가능 지네릭 클래스 예시 //일반 클래스 class Box { Object item; void setItem(Object itme) { this.item = item; } Object getItem() { return item; } } //지네릭 클래스로 변경 class Box { //지네릭 타입 T 선언 T item; void s..
-
[JPA] 연관관계 매핑 기초DEV/JPA 2024. 3. 29. 17:00
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다. 강의 : 인프런 교육자 : 김영한 연관관계가 필요한 이유 : 객체를 테이블에 맞추어 모델링 할 경우 문제 [전제조건] 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. = 회원과 팀은 N:1 관계이다. 1. 참조 대신 외래 키를 그대로 사용해야함 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; // Member테이블의 외래키 … } @Entity public class Team { @Id @Genera..
-
[JAVA] 스트림(Stream) 생성 / 중간연산 map,flatMap / 최종연산 reduce, collect / Optional (2)DEV/JAVA 2024. 3. 26. 16:16
1. 스트림 만들기 컬렉션 : Stream Collection.stream() ex : Stream intStream = list.stream(); 배열 Stream Stream.of(val) Stream Arrays.stream(val) ex 1 : Stream strStream = Stream.of( "a","b","c" ); ex 2 : Stream strStream = Arrays.stream(new String[]{ "a","b","c" }); 특정 범위의 정수 : 지정된 범위의 연속된 정수를 스트림으로 생성해서 반환 IntStream.range(int begin, int end) : end가 범위에 포함 X IntStream.rangeClosed(int begin, int end): end가 ..
-
[JAVA] 스트림(Stream) 기본 / 특징 / 연산 (1)DEV/JAVA 2024. 3. 20. 17:29
(1) 등장배경 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 for문과 Iterator를 이용해 코드를 작성해왔으나, 이러한 코드는 가독성이 떨어지고 재사용성도 떨어진다. 또한 데이터 소스마다 다른 방식으로 다뤄야한다는 문제점과 컬렉션 클래스에 같은 기능의 메서드들이 중복해서 정의되어있다. 이러한 문제점들을 해결하기 위해 만들어진 것이 ‘스트림’ 이다. 스트림은 데이터소스를 추상화하고, 자주 사용되는 메서드를 정의해 놓았다. → 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 됨. → 코드의 재사용성이 높아짐 ex) 다음과 같은 배열과 리스트가 존재할때, String[] strArr = { “aaa”, “bbb”, “ccc” }; List strList = Arrays.asList(..
-
[JAVA] 람다식 (Lambda expression)DEV/JAVA 2024. 3. 17. 17:57
* 람다식 : 메서드를 하나의 식으로 표현한 것 → 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해줌 → 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어져 람다식을 익명함수라고도 함 int [] arr = new int[5]; Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1); 위의 람다식을 메서드로 표현하면 아래와 같다. int method() { return (int) ((Math.random() * 5) + 1); } * 메서드와 비교했을때 람다식의 장점 ! 간결하면서 이해하기 쉽다. 함수를 만들 필요가 없어 생산성이 좋다. (메서드는 클래스가 필요하며, 객체도 생성해야만 호출해서 사용할 수 있다.) * 람다식 작성법 : 메서드에서..
-
[JPA] 엔티티 매핑DEV/JPA 2024. 3. 7. 23:19
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다. 강의 : 인프런 교육자 : 김영한 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본키 매핑 : @Id 연관관계매핑 : @ManyToOne, @JoinColumn @Entitiy @Entity가 붙은 클래스는 JPA가 관리 * 기본 생성자 필수 * final , enum, interface, inner클래스 사용 X * 저장할 필드에 final 사용 X 속성 : name - JPA에서 사용할 엔티티 이름 지정 - 기본값은 클래스 이름을 그대로 사용 - 같은 클래스 이름이 없다면 가급적 기본값 사용 @Table @Table은 엔티티와 매핑할 테이블 지정 속성 - name : 매핑할 테이블 이름 (엔티티이름을사..
-
[JPA] 영속성 관리DEV/JPA 2024. 2. 22. 02:12
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다. 강의 : 인프런 교육자 : 김영한 영속성 컨텍스트 → 엔티티를 영구 저장하는 환경 → EntityManager.persist(entity); 엔티티의 생명주기 - 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 ex ) //객체를 생성한 상태 (비영속 상태) Member meber = new Member(); member.setId(100L); member.setName("HelloJPA"); - 영속 : 영속성 컨텍스트에 관리되는 상태 ex ) EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); //객체를 저장한 상태 (영속상태) em.persist(me..