본문 바로가기

전체 글29

[JPA] @Id, @GenerateValue 의 전략 보통 AUTO 로 설정하는데, 공부도 할겸 정리해본다. GenerateValue의 전략은 3가지가 있다. 1. IDENTITY 2. SEQUENCE 3. TABLE 1. IDENTITY 기본키를 생성하는 작업을 전적으로 데이터베이스에 위임하는 것이다. 즉 데이터베이스와 동일시 하는 것. 이러한 특징때문에 persist 명령후에 엔티티의 pk를 바로 알수가 없다. 왜냐하면 데이터베이스에 한번 갔다 와야 pk를 알 수 있기 때문이다. 그래서 persist를 하면 바로 insert쿼리가 전송된다. 원래는 flush작업으로 그동안 쌓여있던 sql 쿼리들이 전송되면서 동기화가 된다. IDENTITY전략에서만 유일하게 persist 작업과 동시에 쿼리를 날린다. 2. SEQUENCE persist 하면 데이터베이스.. 2020. 8. 6.
[JPA] 엔티티 업데이트 엔티티 매니저의 merge라는 명령어가 존재한다. 하지만 기본적으로 JPA에서 영속성 컨텍스트의 엔티티가 변경이되면 이를 감지한다. 따라서 따로 업데이트를 하는 쿼리를 날리지 않아도 된다. 2020. 8. 6.
[JPA] EntityManager 명령어 정리 find(class이름,기본키) 해당하는 객체를 영속성 컨텍스트로 가져온다. 영속성 컨텍스트에 이미 객체가 있다면 객체를 그대로 반환한다. 객체가 프록시객체라면 프록시 객체를 반환한다. (동일성 보장) persist(object) 객체를 영속화 한다. 영속성 컨텍스트에 객체를 저장한다. remove(object) 영속성 컨텍스트에서 객체를 제거한다. createQuery(jpql) jpql을 sql로 쿼리를 생성해 데이터베이스에 전송한다. detach(object) 영속상태의 객체를 비영속상태로 만든다. clear 영속성 컨텍스트를 비운다. flush 영속성 컨텍스트의 내용과 데이터베이스의 내용을 동기화한다. close 영속성컨텍스트를 더이상 관리하지 않는다. 2020. 8. 6.
[JPA] 영속성과 영속성 컨텍스트 영속성 컨텍스트에 관한 언급은 공식사이트에도 있다. https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html EntityManager (Java(TM) EE 7 Specification APIs) Interface used to interact with the persistence context. An EntityManager instance is associated with a persistence context. A persistence context is a set of entity instances in which for any persistent entity identity there is a unique entity i.. 2020. 8. 6.
[JPA] ORM 의미 및 JPA 는 왜 쓰는가? 출처) ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EA%B4%80%EA%B3%84_%EB%A7%A4%ED%95%91 객체 관계 매핑 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 ko.wikipedia.org ORM을 검색하면 정의는 객체 관계 매핑이라고 한다. 왜 객체 관계 매핑이라는 단어가 생겨났는가? ORM이 생긴 이유를 알기 위해서는 객체 지향 프로그래밍 언어의 객체와 데이터베이스의 데이터의 차이를 알아야 한다. 과일상자라는 객체를 java에서 클래스로 생성한.. 2020. 8. 6.
[JAVA / PYTHON] 연구소 3 (백준 17142) - 삼성기출 자바로 bfs,dfs 문제를 풀어본적이 없어서 간단한 bfs 문제를 풀어보려고 시도했다. 이전에 삼성 sw 역량테스트를 준비하면서 파이썬으로 쉽게 풀었지만 이제는 자바에 익숙해 지고 싶어서 자바로 풀어보았다. 자바로 풀면서 놀랐던것은 왜 순열과 조합과 관련한 라이브러리가 없는 걸까... 물론 분명히 있을거 같은데 본인이 못찾는 것일 수도 있다. 귀찮지만 직접 조합을 구현했다. 조합은 dfs로 구현하였다. 문제를 푸는 알고리즘은 그림으로 표현하겠다. 위와 같은 연구소 배열이 있다고 하자. 값이 2인것은 바이러스가 놓일 수 있는 위치다. 바이러스가 놓인 위치가 아니다. 이 중에서 2개를 활성화 한다고 하면 활성화 한곳은 0 으로 바꾸고 visited 에서 해당위치에 1로 바꿔준다. 또한 비활성화한 곳은 -1.. 2020. 8. 1.
[JAVA] 괄호변환 (kakao 2020) 위 문제는 알고리즘을 다 제공하였다. 그대로 구현만 하면 되는 아주 심플한 문제다. 여기서 String 을 자바로 어떻게 다룰 것인지가 문제인데 예를 들어 String p = "maple Story" 라는 String 이 있을 때, 각각의 char에 접근하는 방법은 몇가지 있는데 1. charAt으로 접근하는 방법 for(int i=0;i 2020. 7. 31.
[MYSQL] 프로그래머스 sql 쿼리 문제 후기 및 접근법 sql 문제를 처음 풀어보면서 내가 생각했던 대로 안되네? 어떻게 내부적으로 동작할까? 에 대한 의문에 대해 적어본다. 보통 데이터베이스 문제를 푼다라고 하면 insert, delete 이런 DML 보다는 데이터를 질의하는 SQL 을 물어본다. 그렇다. select 문으로 답을 구한다. 그러면 select 문을 수행할 때 어떤 순서로 수행 되는지 알아야 하는게 우선이다. 하지만 본인은 문제풀면서 순서를 감으로 알게 되었고 스택오버플로우에 똑같은 질문이 있어서 select 문에서 수행하는 순서에 대해 링크를 남겨본다. https://stackoverflow.com/questions/2617661/whats-the-execute-order-of-the-different-parts-of-a-sql-select.. 2020. 7. 30.
[JAVA] 나무 자르기 (백준 2805) 이분탐색의 기본중에 기본이라고 생각한다. 문제는 쉽지만 프로그래머스에서만 풀다보니 입출력하는 방법이 어색했다. 입출력하는 방법에도 익숙해 질겸 백준문제 쉬운거 하나 골라보았다. 다른 사람들의 풀이를 보니 대부분 BufferReader 와 StringTokenizer의 조합을 쓰고 있었다. 본인도 두개의 조합으로 문제를 풀었다. high를 tree의 최대값으로 설정하면 440ms 까지 줄일 수 있다. 220ms 까지 줄이려면 입출력을 직접 코딩해야한다.... 2020. 7. 30.