분류 전체보기

    SSAFY 11기 모집이 곧 시작됩니다!

    SSAFY 11기 모집 날짜가 다음주 중으로 확정됩니다! 많관부 많관부

    [JPA] Entity안에서 데이터를 수정하는 비즈니스 로직을 만들 때

    @Entity @Builder @Getter @NoArgsConstructor @AllArgsConstructor public class CherryBox extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private int quantity; private int totalPriceBeforeDiscount; private double discountRate; private String description; private int pricePerCherryBox; public void updateCherryBox(int quantity, int totalPriceBeforeDiscount..

    OSI 7계층

    OSI 7계층을 나눈 이유는? OSI 7 계층은 네트워크에서 일어나는 통신과정을 7단계로 나눈 것이다. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 7단계중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 시스템을 건드리지 않고도 보수가 가능하다. 학부 때 물리계층에서 올라가는 식으로 배웠기 때문에 물리계층부터 살펴 볼 것이다. 계층 이름 단위(PDU) 예시 프로토콜(Protocols) 디바이스(Device) 7 응용 계층(Application Layer) Data 텔넷(Telnet), 구글 크롬, 이메일, 데이터베이스 관리 HTTP, SMTP, SSH, FTP, Telnet, DNS, modbus, SIP, AFP, APPC, MAP 6 표현 계층(Presentatio..

    http와 https

    HTML 삽입 미리보기할 수 없는 소스 HTTP(HyperText Tranfer Protocol) 웹 상에서 클라이언트와 서버간에 요청,응답으로 정보를 주고받을 수 있는 프로토콜 TCP와 UDP를 사용하며 80번 포트 사용 특징 비연결 클라이언트가 요청을 서버에 보내고 서버가 응답을 클라이언트에 보내면 연결이 바로 끊긴다. 무상태 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태정보를 유지하지 않는다 HTTPS(HyperText Tranfer Protocol over Secuer Socket Layer) HTTP의 보안이 강화된 프로토콜 특징 443번 포트를 사용 비공개 키 알고리즘 사용하여 데이터의 적절한 보호를 보장 암호화를 하는 과정이 웹 서버에 부하를 준다. 따라서 http에 비해 느리다 ..

    [Spring] application.yml에서 값 가져오기

    greeting: message: Welcome to the User Service 첫 번째 방법. Env객체 사용하기 @RestController @RequestMapping("/") public class UserController { private Environment env; @Autowired public UserController(Environment env) { this.env = env; } @GetMapping("/welcome") public String welcome(){ return env.getProperty("greeting.message"); } } 두 번째 방법. @Value 사용하기 우선 클래스를 하나 만들어주고, @Component어노테이션을 추가한다. package co..

    [JPA] JPQL(2) - 기본문법과 파라미터 바인딩

    select_문 :: = select_절 from_절 [where_절] [groupby)절] [having_절] [orderby_절] update_문 :: = update_절 [where_절] delete_문 :: = delete_절 [where_절]참고로 엔티티를 저장할 때에넌 persist()메소드를 사용하면 되므로 INSERT문은 없다 기본문법과 쿼리API SELECT문 SELECT m FROM Member AS m where m.username = 'Hello'대소문자 구분 엔티티와 속성은 대소문자를 구분한다. 예를 들어 Member, username은 대소문자를 구분한다 반면에 SELECT, FROM, AS같은 JPQL키워드는 대소문자를 구분하지 않는다. 엔티티이름 JPQL에서 사..

    [JPA] JPQL(1) - 객체지향 쿼리 소개

    JPQL을 자세히 살펴보기에 앞서 우선 객체지향 쿼리언어가 무엇인지 알아보고 갑시당. 객체지향 쿼리언어란 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리이다. SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다 즉 객체지향 SQL이다. JPA가 공식지원하는 기능 JPQL Criteria쿼리 네이티브 SQL JPA가 공식 지원하는 기능은 아니지만 알아둬야 할 것 Qeury DSL JDBC직접사용, MyBatis같은 SQL매퍼 프레임워크 사용 JPQL소개 Java Persistence Query Language는 엔티티 객체를 조회하는 객체지향 쿼리이다. JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다. 따라서 Dialect만 수정하면 JPQL을 수정하지 않아도 데이터베이스..

    연관관계 매핑 기초 - 단방향

    자바ORM표준JPA프로그래밍을 보고 메모한 내용입니다. 연관관계 매핑 기초 - 단방향 객체는 참조를 사용해서 연관관계를 맺고, 테이블은 외래 키를 사용해서 관계를 맺는다. 따라서 객체의 참조와 테이블의 외래 키를 매핑해야 한다. 키워드 정리 방향 단방향, 양방향이 있다. 예를들어 회원과 팀이 관계가 있을 때 회원 → 팀 또는 팀→ 회원 둘 중 한쪽만 참조하는 것을 단방향 관계라 하고, 회원 → 팀, 팀 → 회원 양쪽 모두 서로 참조하는 것을 양방향 관계라 한다. 방향은 객체 관계에만 존재하고 테이블 관계는 항상 양방향이다. 다중성 다대일, 일대다, 일대일, 다대다 다중성이 있다. 예를 들어 회원과 팀이 관계가 있을 때 여러 회원은 ㅎ므로 회원과 팀은 다대일 관계다. 반대로 한 팀에 여러 회원이 소속될 수..

    EC2에서 실행한 SpringBoot Timezone설정하기

    EC2에 띄운 SpringBoot서버에서 댓글을 불러오는데 자꾸 UTC기준으로 불러왔다. 시간 설정을 해둔게 없어서 3가지 변경해야할 곳을 찾았다. EC2인스턴스의 OS시간 설정 ubuntu가 설치된 os의 시간설정을 해야하나 싶었다. 우선 Timezone을 확인했다 timedatectl ubuntu의 timezone이 UTC로 설정되어 있다. UTC는 우리나라와 9시간 차이가 나니 내가 보낸 요청이 이상한 시간으로 들어간 것이다. 그래서 timezone을 Asia/Seoul로 바꿔주었다. sudo timedatectl set-timezone Asia/Seoul 이제 다시 스프링을 켜서 확인해보았다. 로그를 보니 여전히 시간대가 맞지않다. 난 새벽5시에 스프링 키고 있지 않은디... DB의 시간대 설정 ..

    [JPA] 영속성

    엔티티매니저 팩토리와 엔티티 매니저 일반적으로 EntityManagerFactory를 하나만 생성한다. EntityManagerFactory는 애플리케이션 전체에서 공유되어야 하므로 보통 싱글톤으로 관리한다. EntityManagerFactory를 생성하는 비용은 많이 들기 때문에 애플리케이션 시작 시점에 딱 한 번만 생성하고 계속해서 재사용한다. 그리고 EntityManager는 상대적으로 가벼운 객체이므로 필요할 때마다 생성하면 된다. //엔티티매니저 팩토리 생성. 비용이 많이 든다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); // 엔티티 매니저 생성, 비용이 거의 안든다. EntityManager em ..