하나의 프로덕트를 만든다고 할 때, 처음부터 끝까지 전부 직접 개발하는 경우는 드물다. 외부 패키지, API, 프레임워크 등 외부 코드를 사용하게 된다. 이때, 제공자들은 범용적으로 사용되도록 하지만 사용자는 자신의 요구에 집중하는 인터페이스를 원한다. 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다. 외부 코드를 사용할 때는 먼저 간단한 테스트 케이스를 작성해서 외부 코드를 익히자. 이렇게 테스트를 통하게 되면 필요한 지식만 확보하게 되고, 이해도도 높여준다. 그리고 새 버전이 나왔을 때 우리 코드와 호환되는지, 호환되지 않는지 테스트를 통해 바로 알 수 있게 된다. 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자. 새로운 클래스로 경계를 감..
1. 직접 할당 : 기본 키를 애플리케이션에서 직접 할당 2. 자동 생성 : 대리 키 사용 방식 - IDENTITY : 기본 키 생성을 데이터베이스에 위임(MySQL). 먼저 엔티티를 DB에 저장한 후에 식별자를 조회해서 엔티티의 식별자에 할당. - SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키 할당(오라클). persist() 호출시 먼저 DB 시퀀스를 사용해서 식별자를 조회. 그리고 조회한 식별자를 엔티티에 할당 후 엔티티를 영속성 컨텍스트에 저장) -> IDENTITY나 SEQUENCE전략은 사용하는 데이터베이스에 의존 - TABLE : 키 생성 테이블을 사용 -> 모든 데이터베이스에서 사용 가능 키 생성 전략을 사용하려면 persistence.xml에 hibernate.id.new_g..
요즘 JPA를 공부하고 있는데, 그 책에서 회원을 설명하는 필드인데, 길이 제한이 없다고 가정했기 때문에 VARCHAR가 아닌 CLOB타입을 이용했다. CLOB은 처음 들어봐서 CLOB과 BLOB을 정리해둔다. kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=274&dbnum=127097&mode=detail&type=techreport 데이터 기술 동향 < 정보마당 - 한국데이터산업진흥원 Oracle+PHP Cookbook 시리즈 PHP 애플리케이션에서 Oracle의 PL/SQL API를 활용하는 방법에 대한 다양한 How-To 문서가 제공됩니다. Oracle/PHP 환경의 LOB 처리 Harry Fuecks│PHP 개발자..
atoz-develop.tistory.com/entry/DB-Connection-Pool-용어-정리와-Single-Connection의-문제점 DB Connection Pool - 용어 정리와 Single Connection의 문제점 DB Connection Pool - 용어 정리와 Single Connection의 문제점 용어 정리 DB Connection Pool - DB 커넥션을 관리하는 객체 - DB 커넥션 객체를 여러개 생성해서 Pool에 담아 놓고 필요할때 꺼내 쓰는 방.. atoz-develop.tistory.com 위 출처에 따르면, DB와 연결할 때 Connection을 하나 만들고(Single Connection) 그 Connection에서 여러 개의 Statement를 만들어서 사용하..
초기화 : 영속성 컨텍스트의 1차 캐시, 쓰기 지연 SQL저장소가 비워진다. 종료 : 영속성 컨텍스트의 1차 캐시, 쓰기 지연 SQL저장소도 사라진다. 영속성 컨텍스트가 초기화나 종료되면 엔티티는 준영속상태가 된다. 비영속 : 아직 영속성 컨텍스트나 데이터베이스와 전혀 관련이 없는 순수한 객체 상태 준영속 : (원래 관리했지만) 영속성 컨텍스트가 관리하지 않는 상태 준영속 상태로 만들려면 아래와 같은 세 가지 방법이 있다. // 1. 준영속 상태로 em.detach(); // 2. 영속성 컨텍스트 종료 em.close(); // 3. 영속성 컨텍스트 초기화 em.clear(); 준영속 상태의 특징 1. 비영속 상태와 유사하지만 영속상태를 거쳤기 때문에 반드시 식별자 값은 가지고 있다. 2. 지연로딩을 할..
jeesoo.work/latency-and-bandwidth Puffin's devlog: 네트워크: 레이턴시와 대역폭 레이턴시와 대역폭은 모든 네트워크 트래픽의 성능을 좌우합니다 jeesoo.work 위의 출처에 정리가 잘 되어 있다. 위 출처에 따르면, 네트워크에서의 Latency는 패킷을 전송하는 곳에서부터 전달받는 곳까지 이동하는 데 걸리는 시간이라고 한다. 그리고 좋은 사용자경험을 제공하기 위해서는 프로그램의 응답 속도가 중요하며, 이는 네트워크 레이턴시를 주의 깊게 관리해야 함을 의미한다고 한다.
오류 처리 코드 때문에 프로그램 논리를 이해하기 어렵다면 그건 깨끗한 코드라고 할 수 없다. 예외가 발생할 수 있는 코드를 짤 때는 try-catch-finally문으로 시작해라. 외부 API를 사용할 때는 감싸기 기법을 사용해라. 특수 사례 패턴의 경우, 코드상에서 처리하지 말고 클래스를 만들거나 객체를 조작해 처리한다. null을 반환 혹은 전달하는 방식으로 에러 처리를 하지 마라. 필요에 따라 자바에서 지원하는 Collections.emptyList()를 사용해서 미리 정의된 읽기 전용 리스트를 반환해라.