일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 성장기록
- KPT
- GitHub
- 클래스
- 객체지향 언어
- 변수의 다양성
- 메서드
- JVM
- static
- Java
- 스레드
- diary
- 회고록
- 포맷은 최후의 보루
- #내일배움캠프
- 생성자
- 해우소
- 내일배움캠프
- TiL_1st_0419
- Token
- 스파르타내일배움캠프TIL
- 감사기록
- Git
- Github_token
- 스파르타내일배움캠프
- Java의 이점
- #스파르타내일배움캠프TIL
- #스파르타내일배움캠프
- Diary 해우소
- 인스턴스
- Today
- Total
목록Organizing Docs/Java Docs (20)
몬그로이
ORM 은 DAO 또는 Mapper 를 통해서 조작하는것이 아니라테이블을 아예 하나의 객체(Object)와 대응시켜 버립니다.객체지향(Object) 을 관계형 데이터베이스(Relation) 에 매핑(Mapping) 한다는건정말 많은 난관이 있습니다. 어떻게 해결했는지 알아볼까요? 상속의 문제객체 : 객체간에 멤버변수나 상속관계를 맺을 수 있다.RDB : 테이블들은 상속관계가 없고 모두 독립적으로 존재한다.해결방법 : 매핑정보에 상속정보를 넣어준다. (@OneToMany, @ManyToOne) 관계 문제객체 : 참조를 통해 관계를 가지며 방향을 가진다. (다대다 관계도 있음)RDB : 외래키(FK)를 설정하여 Join 으로 조회시에만 참조가 가능하다. (즉, 다대다는 매핑 테이블 필요) 해결방법 : 매핑..
Cascade (영속성 전이)사용 조건양쪽 엔티티의 라이프사이클이 동일하거나 비슷해야한다.예를들어, 게시글이 삭제되면 첨부파일도 같이 삭제 되어야 한다.대상 엔티티로의 영속성 전이는 현재 엔티티에서만 전이 되어야 한다. (다른곳에서 또 걸면 안됨)예를들어, 첨부파일을 게시글이 아닌 다른곳에서 영속성 전이를 하면 안된다.옵션 종류ALL : 전체 상태 전이PERSIST : 저장 상태 전이REMOVE : 삭제 상태 전이MERGE : 업데이트 상태 전이REFERESH : 갱신 상태 전이DETACH : 비영속성 상태 전이 orphanRemoval (고아 객체 제거) 사용법Cascade.REMOVE 와 비슷한 용도로 삭제를 전파하는데 쓰인다.부모 객체에서 리스트 요소삭제를 했을경우 해당 자식 객체는 매핑정보가 없어..
PagingAndSortingRepository : 여기에서 페이징 & 소팅 기능을 제공 페이징 처리 프로세스PageRequest 를 사용하여 Pageable에 페이징 정보를 담아 객체화 한다.Pageable을 JpaRepository가 상속된 인터페이스의 메서드에 T(Entity)와 함꼐 파라미터로 전달한다.2번의 메서드의 return 으로 Page가 응답 된다.응답된 Page에 담겨진 Page 정보를 바탕으로 로직을 처리하면 된다 Pageable 객체 생성을 위한 메서드 정의*PageRequest 객체에 만들고, service 단에서 사용한다PageRequest.of(int page, int size) : 0부터 시작하는 페이지 번호와 개수. 정렬이 지정되지 않음PageRequest.of(int ..
Processing to run once : application 실행 시 처음에 한 번 작동하는 프로세스(1) : application 이 SqlSession Factory Builder를 build 하도록 요청(2) ~ (3) : SqlSession Factory Builder 가 설정된 MyBatis Config File 을 참고하여 SqlSession Factory 를 생성함 Processing to run per requests : application 이 작동하는 동안 수행되는 프로세스(4) : client 로부터 request 를 받음(5) : application 이 SqlSession Factory 에게 SqlSession 을 생성하도록 시킴(6) : 그에 따라 config 설정에 맞게 ..
데이터 베이스 Driver역할: 애플리케이션과 데이터베이스 간의 통신을 중개 동작 방식 - Driver Manager 를 통하여 진행1. 연결초기화 (Connection)Driver Manager : getConnection()요청 수신 : 애플리케이션이 드라이버에 연결 요청한 것을 받음연결 설정 : 서버에 로그인 후 필요 설정 수행하여 연결 완료 (네트워크 정보, 인증 자격 증명 등 사용)2. SQL 전송 및 실행 (Statement)(준비된 sql문)Driver Manager : connection.statement(sql) 를 통해 statement 로 만들기SQL 명령 변환 : 애플리케이션에서 보낸 SQL 명령을 DB가 이해하는 형태로 변환 Driver Manager : statement.ex..
{power = !power} TV를 사용하려면 TV 리모컨을 사용해야 하고, 에어컨을 사용하려면 에어컨 리모컨을 사용해야 하는 것처럼TV 인스턴스를 사용하려면 TV클래스 타입의 참조변수가 필요한 것이다 멤버변수클래스변수static공유값클래스이름.클래스변수인스턴스변수x서로다른값 지역변수 메서드 내, 생성자,초기화블럭내부 public class Card { String kind; int number; static int width; static int height;}//System.out.println("Card.width = " + Card.width);System.out.println("Card.height = " + Card.height); //static 변수는 변수 선언..
int result = add(new int[]{1,2,3,4,5}); //new 를 생략할 수 없다//System.out.println(Arrays.toString(iArr)); //배열을 문자로 바꿔 출력하기//char[] chArr = {'a', 'b', 'c', 'd'};System.out.println(chArr); // abcd 로 출력됨//char[] abc = {'A', 'B', 'C', 'D'};char[] num1 = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',};char[] result = new char[abc.length + num1.length];System.arraycopy(abc, 0, num1, 0, abc.length);Sys..
쓰기 지연 저장소는 DB에 실제 적용하기 전까지 변경사항을 가지고 있는 장소이고지연 로딩은 프록시를 통해 DB의 실제 정보를 가져오는 것을 미루는 것이다 그러므로DB에 쓰느냐, DB에서 가지고 오느냐로 구별하면 되겠다 참고로 공통점은 영속성 컨텍스트를 거친다는 점이다프록시 객체가 포함하는 최소한의 정보식별자 (ID): 엔티티를 식별하기 위한 기본 키 정보엔티티 타입 정보: 엔티티의 클래스 타입이나 인터페이스 정보지연 로딩 로직: 실제 데이터베이스 접근을 지연시키는 로직초기화 플래그: 프록시 객체가 초기화되었는지 여부를 추적하는 플래그 DB를 불러내는 방식에는 두 가지가 있는데,그 중 em.getFind는 Entity를 찾아오는 것이고em.getReference 를 통하였을 때 우선순위로 프록시가 호출되어..