ORM에서의 객체 연관 매핑 연관 관계의 핵심 키워드 방향 매핑 방식에는 크게 단방향 / 양방향 방식이있다. 단방향 한쪽 방향으로의 접근이 가능한 매핑으로 회원 -> 팀 혹은 팀 -> 회원 방식 양방향 양방향 으로의 접근이 가능한 매핑으로 회원 팀 서로의 객체를 참조하는 방식이다. 단, 이러한 관계는 객체 관계에서만 가능하고 테이블 관계는 항상 양방향 상태이다. 다중성 다대일 / 일대다 / 일대일 / 다대다 연관관계 주인 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야한다. 테이블과 객체의 연관관계 차이 객체 객체는 필드(멤버변수)로 팀 객체와 연관관계를 맺는다. 테이블 테이블은 외래 키로 연관관계를 가진다. 여기서 확인해야 할 것은 테이블은 외래키를 가지게 된다면 자동으로 양방향 테이블을 가지..
진영을 나누어 보자 영속성 기능아래 DB를 연결하는 방식은 두가지로 나뉜다. SQL Mapper는 SQL을 명시해줘야 한다. ex) MyBatis, JDBC Template 객체를 통해 간접적으로 데이터베이스를 다루며 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. ex) JPA, Hibernate 🌠 ORM (Object - Relational - Mapping) 객체와 DB를 매핑하는 기술로 객체와 테이블을 자동으로 매핑해서 패러다임의 불일치 문제를 자동으로 해결해준다. SQL 중심의 매핑이 아닌 자바 클래스 위주의 매핑이다. 즉, 객체라는 특성과 ORM 메서드가 사용되며 영속성의 기능을 가지고있는 기술이다. ☄ 자주 틀리는 문제 - 모든 자동 매핑이 ORM은 아니다! ..
JPQL(Java Persistence Query Language) ? JPA의 구성요소중 하나이며 SQL문법을 추상화 시킨 객체지향 쿼리이다. 객체 중심의 문법인 만큼 특정 DB에 의존하지 않는다. 엔티티 조회, 묵시적 조인, 다형성 지원으로 SQL 보다 간결하다. 왜 개발자들은 JPA를 두고 JPQL를 사용할까? JPA 문법은 CRUD 명령어 처리에서 효율적인 명령어 기능을 제공하지만 검색 명령어에 대해서는 비효율적으로 작동한다. 객체중심의 JPA는 검색을 할때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야하는데 DB의 모든 데이터를 호출후 엔티티 객체로 변경하여 처리하는 것은 불가능하다. 때문에 개발자들은 특수한 경우에 대처할 수 있도록 쿼리를 사용할 수 있도록 만들어 놓은 것이 JPQL인 것이다..
🚀 Hibernate Hibernate는 JPA의 인터페이스를 구현한 구현체이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다. 🚀 JPA(Java Persistent API) JPA는 자바 진영의 ORM 기술 표준이며 관계형 데이터베이스와 자바 객체를 매핑하기 위한 EntityManager 인터페이스를 제공한다. 🌠 장점 CRUD 쿼리를 자동으로 생성해준다. DB 종류에 상관없이 사용 가능하다. Entity에 속성만 추가해준다면 쿼리를 건들 필요가 없다. 🌠 단점 상대적으로 학습이 어렵다. 복잡한 쿼리 작성이 어렵다. 동적 쿼리 같은 복잡한 쿼리를 처리하는 것이 어려우므로 QueryDSL을 함께 이용한다. 🚀 Spring Dat..
영속성 컨텍스트 JPA 프로세스의 근본이자 가장 중요한 요소가 컨텍스트이다. 이 영속성 컨텍스트는 JPA 작업중에 개발자가 commit 혹은 flush 하기 전까지 DB에 저장하지 않고 SQL 쿼리문을 계속에서 컨텍스트에 저장 하도록 되어있다. 영속성 컨텍스트의 구성 1차 캐시 영속성 컨텍스트에는 작업 대상이 될 엔티티를 1차 캐시에 저장하도록 되어있다. 그리고 엔티티 조회시 DB를 거치치 않고 1차 캐시를 우선적으로 조회하도록 하며 데이터가 없을경우 DB에서 조회 후 엔티티를 1차 캐시에 저장한 후에 영속 생태를 반환한다. 쓰기 지연 SQL 저장소 엔티티 insert, delete, update 작업시 쿼리를 1차 캐시 혹은 DB에 매번 작업처리하는 것이 아닌 쓰기 지연 SQL 저장소에 저장 후 flu..
일렉트론 start or Build error Issue! 일렉트론 프로젝트의 Auto- Builder 문제를 해결하는 과정에서 다음과 같은 문제가 발생했다. Cannot find module fs/promises /Users/abhimatta/Documents/abhishek/accura-electron-dev/node_modules/builder-util/out/fs.js /Users/abhimatta/Documents/abhishek/accura-electron-dev/node_modules/builder-util/out/util.js /Users/abhimatta/Documents/abhishek/accura-electron-dev/node_modules/electron-builder/out/cl..
목차 Autowire 사용과 Resource의 사용 Autowire 사용과 Resource의 사용 public class Car { // TODO: 속성 자동 주입 @Autowired Tire tire; public String getTireBrand() { return "장착된 타이어: " + tire.getBrand(); } } public class Car { // TODO: 속성 자동 주입 @Resource Tire tire; public String getTireBrand() { return "장착된 타이어: " + tire.getBrand(); } } 위 코드를 본다면 차이가 보이지 않는다. 단, 어노테이션만 다를 뿐이다. @Autowire @Resource 출처 스프링 프레임워크 표준 자바 ..
목차 스프링 없이 생성자를 통한 의존성 주입 속성 통한 의존성 주입 스프링을 사용하여 XML 파일 사용 JAVA 코드에서 속성 주입 XML 파일 사용 XML 파일에서 속성 주입 Autowire 사용 스프링 없이 생성자를 통한 의존성 주입 자바를 기초로 만든 가장 기본적인 방식이 아닐까 생각한다. Driver 클래스에서 Car객체를 생성하고 그 내부에서 필요한 객체를 생성하여 주입하는 방식인데 생각해본다면 코드의 유연성이 떨어지는 코드라고 생각한다. 즉, 필요에 따라 객체의 핵심을 손봐야하는 문제가 발생하는 것이다. public class Car { Tire tire; public Car() { tire = new KoreaTire(); // tire = new AmericaTire(); } public ..
목차 AOP의 5가지 용어 Advice 는 무었일까? Aspect는 정확이 무엇일까? Advisor은? AOP의 5가지 용어 AOP를 학습했지만 아직도 모르는 어노테이션이 수두룩하다. 이번 포스팅에서는 AOP에서 가장 많이 사용되는 용어를 정리해 보려한다. 용어 뜻 Aspect 관점, 측면 Advisor 조언자, 고문 Advice 조언, 충고 JoinPoint 결합점 Pointcut 자르는 점 Advice 는 무었일까? 충고라는 의미의 Advice는 @Aspect 를 가지는 class가 가지는 메소드이다. 다르게 말하면, pointcut에 적용할 로직(메서드)를 의미한다. @Aspect @Component public class ParameterAop { @Pointcut("execution(특정 클래스..
목차 관점 지향 프로그래밍 횡단 관심사 AOP 예제 관점 지향 프로그래밍 관점에 집중한 이 개념은 특수한 기능이 아닌 개발자가 하나의 로직에 집중할 수 있도록 별도의 로직을 개설하는 과정의 개념으로 볼 수 있다. 쉽게 요리는 요리사가 미식은 미식가가 하는 것과 같은 것이다. 물론 미식가가 요리를 할 수 있지만 먹는 행위를 하는 것에 집중하는 것이 좋은 리뷰를 남길 수 있을 것이다. 비즈니스 개발에서는 다음과 같이 볼 수 있다. Spring Application은 특별한 경우를 제외하고 MVC 웹 어플리케이션 에서는 Web Layer / Business Layer / Data Layer로 정의한다. - Web Layer - REST API를 제공하며, Client 중심의 로직 적용 - Business La..
- Total
- Today
- Yesterday
- 자격증
- nginx
- 스프링부트
- 면접
- Solid
- C언어
- CS
- 백준
- 자바
- Algorithm
- 스프링
- java
- 그래프
- Matlab
- 릿코드
- 디자인패턴
- 프로그래머스
- Spring
- 알고리즘
- 수학
- kakao
- docker
- 매트랩
- interview
- ajax
- security
- springboot
- spring-cloud
- OOP
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |