전체보기(316)
-
스프링 부트 Annotation - 설정
Spring boot starter = 의존성 관리를 한번에 해줌 @SpringBootApplication 스프링 부트 어플리케이션의 시작 지점 @ComponentScan 이 애플의 컴포넌트 스캔을 어떤 단위로 하겠다.@Repository@Component@Service@Controller@RestController@Configuration이 붙은 클래스를 탐색 @EnableAutoConfiguration 자동 구성을 생성 @Configuration 구성을 설정 @SpringBootConfiguration = @Configuration 스프링 부트에서 사용하는 Configuration 과 구분짓기 위해서 만듬 @EnableConfigurationProperties~ 애플리케이션 속성 정의, 클래스에 유연..
2019.03.17 -
[2019.03.17] 이팩티브 자바 3판 (5장 : 제네릭 사용시 - )
제네릭에 지정된 타입은 실체화 불가한 타입이라는 것을 명심하자. + 알아서 형변환 코드를 추가할 수 있다. - 코드가 지저분해진다. Raw 타입과 제네릭 제네릭 클래스를 사용할 때 raw type 제네릭은 절대 쓰지마라 public class MyGeneric{ // ... } 이 있을 때 MyGeneric myGeneric = MyGeneric(); 과 같이 제네릭 매개변수를 안넣어주는 경우 raw type이라고 한다. MyGeneric와 같은 와일드 카드 타입을 사용하라. raw type 을 사용하면 제네릭이 안겨주는 안전성과 표현력을 잃는다. 그러므로 절대 쓰지말자 IDE 가 알려주는 제니릭의 경고 제네릭을 사용하면서 생기는 모든 경고는 가능하면 없애라. 경고를 제거할 수 없지만 안전하다고 확신이 ..
2019.03.17 -
JPA (기초 : 영속성 컨텍스트)
영속성 컨텍스트 : 엔티티 매니저를 생성하면 생기는 것영속성 컨텍스트는 객체와 데이터 베이스가 통신하기 위해 마련된 가운데 공간이다.em.persist(member)를 하면 member 객체를 영속성 컨텍스트에 보낸다. em.flush()를 하면 영속성 컨텍스트에 존재하는 객체를 DB에 반영하는 쿼리를 실행한다.tx.commit()을 해도 영속성 컨텍스트에 존재하는 객체를 DB에 반영하는 쿼리를 실행한다.jpql 쿼리를 실행해도 영속성 컨텍스트에 존재하는 객체를 DB에 반영하는 쿼리를 실행한다.=> 개발자가 쿼리가 DB에 바로 반영되는 것을 원하는 경우이므로* em.flush는 영속성 컨텍스트를 비우는 것은 아니다.* em.clear가 영속성 컨텍스트를 비우는 것이다. 1. 캐시로 동작할 수 있다.2. ..
2019.03.17 -
JPA (기초 : 엔티티 Annotation)
public enum MemberType{ADMIN, USER } @Entity public class Member{ @Id private long id; @Column(name="nickname") private String name; @Enumerated(EnumType.STRING) private MemberType memberType; // ... getter, setter 생략 } @Id(AUTO) : 기본키인데 방언에 따라 자동 증가하는 sequence 키다.@Column(name="nickname") : 매치되는 데이터 베이스의 칼럼명은 ~ 이다.@Enumerated(EnumType.STRING) : EnumType 을 데이터로 저장
2019.03.16 -
JPA (기초 : 설정, CRUD)
persistence.xmlJPA의 설정을 관리하는 파일Spring boot에서는 application.properties 또는 application.yml 으로 관리한다. H2와 JPA를 연결하는 예시 javax.persistence.jdb.driver = org.h2.Driver javax.persistence.jdb.url= jdbc:h2:tcp://localhost/~/test javax.persistence.jdb.user= javax.persistence.jdb.password = hibernate.dialect = org.hibernate.dialect.H2Dialect hibernate.show_sql = true hibernate.format_sql = true hibernate.use_..
2019.03.16 -
[2019.03.16] H2와 Dialect
H2- 스프링 내장형 데이터 베이스이다.- 인메모리 데이터 베이스이다.- 용량이 1.5M 밖에 안하고 가볍다.- 웹에서 쿼리를 할 수 있는 GUI를 제공한다. (http://localhost:8080/console/)- 테스트 단계에서 사용하기에 적합하다. Hibernate Dialect- 직역하면 방언- MySQL, Oracle, H2 ... 모든 데이터 베이스의 SQL은 비슷한데 전부 미묘하게 다르다.- 프로젝트를 MySQL로 작업하다 Oracle로 바꿀 경우 현재까지 작업해온 프로젝트 내의 모든 SQL 문을 수정해야한다.- 이를 방지하기 위해 Hibernate는 dialect 를 이용하여 각각의 데이터 베이스에 대응하는 dialect를 만들어 놓았다.- 개발자는 프로젝트의 Hibernate에게 어떤..
2019.03.16