본문 바로가기

🛠 백엔드27

[2] JPA 2. JPA 1. JPA란? 자바를 사용할 때, SQL의 문제점 자바 객체를 SQL로 DB를 관리하고, DB를 다시 SQL을 통해 자바 객체로 반환하는 과정이 귀찮음. 객체와 RDBMS 간의 패러다임의 불일치 RDBMS와 객체지향 간의 중간에서 2개를 매핑하는 역할을 ORM이라고 한다. JPA는 이런 ORM의 표준 명세로 자바에서 제공하는 API이다. JPA는 인터페이스이고, 이를 구현한 구현체가 대표적으로 Hibernate 등이 있다. [ JPA 장점 ] 1. 특정 DB에 종속되지 않음 - 설정 파일에서 사용할 DB 변경 가능 2. 객체지향 프로그래밍 3. 생산성 향상 - DB에 새로운 칼럼 추가 시, DTO 클래스의 필드도 모두 변경해야 함. - JPA는 매핑 클래스에 필드만 추가하면 끝! ( DAO.. 2023. 1. 8.
[7] Order 1. Order 기능 ✨ 주문 시, 재고 부족 익셉션 -> OutOfStockException public class OutOfStockException extends RuntimeException { public OutOfStockException(String message){ super(message); } } ✨ 주문시 상품 재고 감소시키는 로직 -> Item public void removeStock(int stockNumber){ int restStock = this.stockNumber - stockNumber; if(restStock OrderItem public static OrderItem createOrderItem(Item item, int count){ OrderItem orderI.. 2023. 1. 7.
[6] Item 등록 및 조회 1. 상품 등록하기 ✨ Item의 Image를 저장하는 상품 이미지 엔티티를 만들어보자. Item과 Item_img는 일대다 관계이다. _ItemImg_ @Entity @Table(name = "item_img") @Getter @Setter public class ItemImg extends BaseEntity { @Id @Column(name = "item_img_id") @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String imgName; // 이미지 파일명 private String oriImgName; // 원본 이미지 파일명 private String imgUrl; // 이미지 조회 경로 private S.. 2023. 1. 4.
톰켓이란? HTTP 통신에서 소켓과 통신하는 것을 시스템 콜이라고 한다. 톰켓을 알기 위해선 웹서버에 대해 알아야한다. 내가 가진 컴퓨터에 3개의 파일을 공유하고 싶다. 이때 다른 컴퓨터들 A,B,C가 있다고 했을 때, 내 컴퓨터 다른 컴퓨터들을 HTTP로 연결 되어있다. 이 경우 내 컴퓨터는 갑에 해당하고, A,B,C는 을에 해당한다. 을이 갑에게 파일을 달라고 하는 것을 Request 반대로, 갑이 을에게 파일을 주는 것을 Response라고 한다. Request를 할때에는 ip주소를 이용하고, Request 시 어떤 파일을 원하는 지를 URL로 표현을 한다, (예, test.com/a.html) 위 같은 상황에서 만약 을이 Request를 안하면 갑은 을의 주소를 알수 없기때문에 Response를 할 수 없다.. 2023. 1. 4.
HTTP란 무엇인가? 소켓 통신 소켓이란? : 운영체제가 가지고 있는 것 [ 원리 ] 1. A가 C에 접속 요청을 하면 C에 5000이라는 Port의 소켓이 Open된다. (5000은 접속 전용 소켓) 2. A와 접속이 되면 5000 포트와 연결이 끊기고, 새로운 쓰레드의 무작위 포트와 연결된다. 3. 똑같이 B와 C도 5000포트로 연결되면 끊기고, 새로운 쓰레드의 무작위 포트와 연결된다. [ 단점 ] 위 방식은 Time Slice 방식이고 계속 연결되어 있기 때문에 Thread가 많아지면 과부화가 발생된다. HTTP 통신 - Stateless 방식 : 문서를 전달하는 통신 [ 원리 ] 1. A가 a.txt를 요청하면 C의 소켓에서 해당 파일을 보여주고 연결을 끊는다. 2. 마찬가지로 B가 b.txt를 요청하면 C의 소켓에.. 2023. 1. 3.
[5] 연관매핑 연관매핑이란? Entity와 연관 관계를 매핑해두고, 해당 Entity와 관련된 Entity를 사용하는 것. 1.1 일대일 단방향 매핑 cart - member 회원 한명 당 하나의 카트를 가지게 설정하려고 함. 카트에 회원의 아이디를 저장하는 칼럼을 만든다. -> Cart @Entity @Table(name = "cart") @Getter @Setter @ToString public class Cart extends BaseEntity { @Id @Column(name = "cart_id") @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="me.. 2022. 12. 30.