728x90
반응형

전체 글 145

[JPA] 엔티티 매핑

깃허브 바로가기 JPA에서 가장 중요한 것은 엔티티와 테이블 매핑을 정확히 하는 것이다. 매핑 어노테이션을 잘 숙지해야 한다. 객체와 테이블 매핑 : @Entity, @Table 기본 키 매핑 : @Id 필드와 컬럼 매핑 : @Column 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로 엔티티라고 부른다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 정한다. 보통 기본값인 클래스 이름을 사용한다. 만약 다른 패키지에 이름이 같은 엔티티 클래스가 있다면 이름을 지정해서 충돌하지 않도록 해야 한다. 설정하지 않으면 클래스 ..

JPA 2022.08.04

[JPA] 영속성 관리

깃허브 바로가기 이번 발표는 내가 진행하였다. 그래서 이해하기가 더욱 더 쉬웠다. JPA가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계부분과 매핑한 엔티티를 실제 사용하는 두가지 부분으로 나눌 수 있다. 여기서는 매핑한 엔티티를 엔티티 매니저를 통해 사용하는 것을 알아보자. 영속성 관리 엔티티 매니저는 엔티티를 저장, 수정, 삭제, 조회 등등 엔티티와 관련된 모든 일을 처리한다. 말그대로 엔티티를 관리하는 것이다. 엔티티 매니저 팩토리와 엔티티 매니저 DB를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. 팩토리를 만드는 것으로 생성할 때 비용이 아주 많이 든다. EntityManagerFactory emf = Persistence.createE..

JPA 2022.08.04

[JPA] JPA 스터디 2장

2장 요약정리 처음 2장은 바로 설치부터 maven 의존성, 라이브러리 설정을 진행한다. 테이블도 생성하는데 이부분은 생략하도록 하겠다. 어노테이션 정리 @Entity 이 클래스를 테이블과 매핑한다고 JPA에게 알려줌. 이렇게 @Entity가 사용된 클래스를 엔티티 클래스라고 함 @Table 엔티티 클래스에 매핑할 테이블 정보를 알려줌 @Table(name = "테이블명") 으로 매핑가능함 name속성을 생략하면 클래스 이름을 테이블 이름으로 매핑한다 @Id 엔티티 클래스의 필드를 테이블의 기본 키에 매핑한다. @Id가 사용된 필드를 식별자 필드라고 한다. @Column 필드를 칼럼에 매핑한다 매핑 어노테이션이 없는 경우 생략하면 필드명을 사용하여 컬럼명으로 매핑 대소문자를 구분하는 DB를 사용한다면 @..

JPA 2022.08.04

[JPA] JPA 스터디 1장

1주차 학습내용 깃허브 바로가기 1주차 스터디에 대해 간략하게 정리하는 내용이다. JPA란? Java Persistence API 의 줄임말로써, 자바 진영의 표준 ORM 기술이다. JPA는 다른 JDBCTemplate 나 Mybatis 등등 객체와 관계형 데이터베이스의 차이를 메우기 위해 SQL을 작성을 해서 개발을 진행해야했었는데, 반복적인 CRUD 뿐만아니라 객체 모델링과 관계형 데이터베이스의 차이를 해결해주었다. JPA의 핵심은 바로 SQL이 아닌 객체 중심으로 개발을 진행하기 때문에 생산성과 유지보수에서 용이하다. 이렇게 되면 테스트를 작성하기에도 편리하다. SQL을 직접 다룰 때 발생하는 문제점 지금까지 실무에서 Mybatis나 iBatis를 사용하였다. 그래서 소스코드를 보거나 내가 구현해야..

JPA 2022.08.04

[네트워크] 개념정리

요즘 계속 뭔가 하나씩 연결이 되는 상황이 많다. 그래서 기분이 좀 좋다. 몰랐던 것을 조사하면 이전의 학습했던 것들이 쭉 이어진다. 오늘도 마찬가지이다.라우터란?라우터는 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치이다. 즉, 라우터는 이름 그대로 네트워크와 네트워크 간의 경로를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비이다. 그냥 공유기라 생각하면 된다.이 라우터에는 단자를 꼽는게 크게 두가지로 볼 수 있는데그것이 바로 WAN과 LAN이다.WANWAN은 Wide Area Network의 줄임말로 한 집마다 인터넷 회선이 있는데 그것을 WAN으로 생각하면 되겠다. 광범위한 지역 단위로 구성하는 네트워크이다.이..

CS/네트워크 2022.08.04

[네트워크] - XSS

XSS : Cross Site Scripting사이트를 교차해서 스크립트를 발생시킴.게시판을 포함한 웹에서 자바스크립트같은 스크립트 언어를 삽입해 개발자가 의도하지 않은 기능을 작동시키는 것클라이언트 측을 대상으로 한 공격이다.게시판에서 글을 쓰는곳에 작성자가 HTML 코드를 삽입하여 글을 읽는사람의 브라우저에서 실행되게 하는 원리이다.이게 단순하게 alert()만 띄운다고 되는것이 아니라 그 스크립트 안에 엄청 긴 코드를 주입해서 무한정 창을 띄우게 하거나 악성코드를 직접적으로 받게 할수는 없지만, URL을 클릭하도록 유도하여 악성 프로그램을 다운받는 사이트로 Redirect시킨다.위험성쿠키 정보 및 세션 획득공격자는 XSS에 취약한 페이지 및 게시판에 XSS공격을 수행함으로써 해당 페이지를 이용하는 ..

CS/네트워크 2022.08.04

[JPA] MariaDB Charset 오류 해결

JPA 오류 💢 jpa에서 spring.jpa.hibernate.ddl-auto=create 속성으로 테이블을 만들어줄 경우에 MariaDB default로 어떤값을 주던간에 latin1속성으로 insert가 된다. 그래서 이방법 말고 안에서 테스트만 한다고 하면 h2 DB를 사용하는 것이 더 바람직하다. 아니라면 ddl-auto 속성을 주지않고 직접 MariaDB에서 어떤 Column들을 넣을지 결정하고 먼저 생성한 다음 연결하는게 좋을 것이다. 이것 때문에 애를 많이 먹었다. [mysqld] datadir=C:/Program Files/MariaDB 10.5/data port=3306 innodb_buffer_pool_size=1948M init_connect="SET collation_connect..

JPA 2022.08.04

[Spring] MockMvc Bean 주입 에러

Mock 빈 오류에 관해서 그동안 혼자 공부한 것들을 토대로 프로젝트를 하나 해보려고 한다. 나름 공부한다고 공부를 했는데 HelloWorld 구현하는데 컨트롤러를 만들어두고 테스트 코드를 내의지대로 처음 작성해봤다. MockMvc 클래스를 사용하여 Mock Bean을 주입받으려고 했더니 빈이 등록되지 않았다는 오류를 받았다. 일단 오류에는 두가지가 있었다. @SpringBootTest 어노테이션을 사용할때 @WebMvcTest도 같이 사용해서 MockBean을 주입받는줄 알고 바로 넣었는데 두 Mock객체가 공유되어있는 객체가 아니고 서로 다른 객체이다. 그래서 두개의 빈이 충돌이 발생한다. 여기서 해결책은 두가지였다. @SpringBootTest와 @AutoConfigurationMockMvc를 사용..

Spring 2022.08.04

[알고리즘] 그리디

그리디 알고리즘 그리디 알고리즘은 단순하지만 강력한 문제 해결 방법이다. 단어 그대로 번역하자면 탐욕법이다. 이 부분에서 탐욕적이라 함은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'이다. 이 알고리즘은 매 순간 가장 좋아 보이는 것만 선택하고, 그 선택이 나중에 어떤 영향을 미치는지에 대해서는 고려하지 않는다. 거스름돈을 예시로 살펴보자 당신은 음식점의 계산을 도와주는 점원이 되었다고 가정하자. 500원, 100원, 50원, 10원짜리 동전은 무한히 존재한다. 손님에게 거슬러줘야 하는 돈이 N원일 때, 거슬러 줘야 할 동전의 최소 개수를 구해라 (단, 거슬러줘야 할 돈 N은 항상 10의 배수이다.) 이럴때는 단순하게 가장 가격이 큰 동전 부터 돈을 거슬러 주는 것이다. 이렇게 되면 ..

CS 2022.08.04
728x90
반응형