목록전체보기 (101)
먹었으면 뇌를 쓰자

마크다운(Markdown) 문법 깃허브 마크다운: GitHub Flavored Markdown Task list(체크리스트) 기능도 사용할 수 있다. README 파일 만들어보기
리턴 값이 있는 경우 (void 없음) 1. 입력 값 o, 리턴 값 o 리턴 값 받을 변수 = 객체.메소드명(인수1, 인수2 ...); /* int sum(int a, int b) { return a+b; } Sample sample = new Sample(); int result = sample.sum(3, 4);*/ 2. 입력 값 x, 리턴 값 o 리턴 값 받을 변수 = 객체.메소드명(); /* String say() { return "hi"; } Sample sample = new Sample(); String result = sample.say();*/ 리턴 값이 없는 경우 (void) 1. 입력 값 o, 리턴 값 x 객체.메소드명(인수1, 인수2 ...); /* void sum(int a, in..
interface Predator { String getFood(); default void printFood() { System.out.printf("my food is %s\n", getFood()); } int LEG_COUNT = 4; static int speed() { return LEG_COUNT * 30; } } interface Barkable { void bark(); } interface BarkablePredator extends Predator, Barkable { } class Animal { String name; void setName(String name) { this.name = name; } } class Tiger extends Animal implements Pred..
1. variable(변수) 변수는 값을 대입할 수 있는 수이다. 클래스에서 선언된 변수는 객체 변수이다. 클래스에서 생성되는 것은 객체, 그리고 이 클래스에 선언된 변수는 객체 변수라고 생각하면 쉽다. 그래서 instance variable(인스턴스 변수)라고도 한다. class Animal { String name; // name은 변수 public void setName(String name) { this.name = name; } } public class Sample { public static void main(String[] args) { Animal cat = new Animal(); cat.setName("nero"); // name 변수에 'nero'라는 값을 넣었다. System.ou..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 4.2 Querydsl - JPQL과 Querydsl 차이 - 환경 설정 - 테스트 코드 작성 - SELECT - Join - Paging JPQL은 주로 정적 쿼리를 작성하는 데 쓰인다. 한번 쿼리를 날려두면 일단은 상태를 유지하는 쿼리이다. Querydsl은 동적 쿼리를 작성하는 데 효율적이다. 조건이 달라지면 쿼리가 다르게 생성되어 실행하도록 하는 쿼리이다. 쿼리를 코드로 작성한다. pom.xml에 Querydsl 라이브러리를 추가해준다. (querydsl : JPA용 Query..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 4. SQL 4.1 JPQL - JPQL은 엔티티 쿼리 - SELECT ... FROM - TypedQuery, Query - JPQL SELECT문에서 가능한 것들 - Join JPQL은 객체 지향 쿼리이다. 테이블이 아닌, 엔티티 객체를 대상으로 한다. (물론 JPQL로 실행한 쿼리도 실행 때는 SQL로 변환된다) JPA에서 제공하는 em.persist 등은 트랜잭션 커밋 시 일괄 전송되지만 JPQL은 쿼리가 작성되면 곧바로 데이터베이스로 전송되어 실행된다. SELECT a FRO..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 3.2 CASCADE - Cascade 전이 - PERSIST - REMOVE를 주의하라 Cascade는 '전이'라는 뜻이다. 일대다(다대일) 연관관계를 맺은 두 엔티티가 있다. 프로그래머는 일 쪽의 상태가 변화하면, 다 쪽의 상태도 변화하도록 만들고 싶다. 예를 들어 사람Person, 주소Address 가 일대다 연관관계를 맺고 있다고 하자. 사람 엔티티가 존재해야 주소 엔티티가 의미를 가진다. 따라서 사람이 remove되면 연관된 주소들도 remove 되도록 cascade 할 수 ..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 3. 상속 상속은 자바에서 중요한 개념이다. 엔티티 차원에서도 상속할 수 있을까? RDB에는 상속 개념이 없지만, JPA에서 상속을 구현할 수 있는 전략이 있다. Mapped SuperClass, Table per Class, Single Table, Joined가 그것이다. 이 중에서 실제 유용한 것은 Single Table과 Joined이다. 3.1 상속관계 Publication : 원고, 부모 클래스 Book : 단행본, 자식 클래스1 BlogPost : 포스트, 자식 클래스2 ..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 2.2 일대다 연관관계 앞서 살펴본 다대일 연관관계(@ManyToOne)은 다 쪽인 Item이 일 쪽인 PurchaseOrder의 FK를 관리하는 관점이었다. 하지만 객체 지향 프로그래밍에서는 일대다 연관관계(@OneToMany)까지 양방향으로 참조하기를 지향한다. 만약 일대다 연관관계의 단방향 참조만 이루어진다면 어떻게 될까? PurchaseOrder 엔티티에서 Item 엔티티로 일대다 단방향 참조만 이루어졌다고 해보자. PurchaseOrder와 Item가 각각 일대다 관계로 연결..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 2. 연관관계 연관관계에는 4가지 종류가 있다. 일대일(One to One) -> 게시물/게시물 정보 일대다(One to Many) -> 게시물/댓글 다대일(Many to One) -> 댓글/게시물 다대다(Many to Many) -> 게시물/중간 테이블/태그 테이블끼리는 FK를 통해 양방향 연관관계를 설정할 수 있다. 그러나 객체끼리는 참조를 통해 단방향 연관관계를 설정한다. 따라서 객체끼리 양방향 연관관계를 설정하려면 서로 걸어줘야 한다. 객체는 서로 참조를 걸어줘야 연관관계가 형..