본문 바로가기

분류 전체보기

(83)
[백준] 12919번 - A와 B 2 (java) Baekjoon 12919 - A와 B 2 (클릭 시 이동) 문제 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다. 문자열의 뒤에 A를 추가한다. 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다. 주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오. 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 512 MB 1837 661..
[JPA] JPA 내부 구조 JPA 내부 구조 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어. 엔티티를 영구 저장하는 환경 이라는 뜻 영속성 컨텍스트는 논리적인 개념이기 때문에 눈에 보이지 않는다 엔티티 매니저를 통해 영속성 컨텍스트에 접근한다. 엔티티의 생명 주기 비영속 (new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속 (managed) : 영속성 컨텍스트에 저장된 상태 준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) : 삭제된 상태 비영속 생성만 되어있는 상태는 비영속 상태이다. 영속 객체를 생성한 후 엔티티매니저를 통해 DB에 넣은 상태 em.persist(manager) 영속성 컨텍스트의 이점 1차 캐시 동일성(identity) 보장 트랜..
[JPA] 양방향 매핑 양방향 매핑 객체에 양방향 연관관계를 적용시키려면 위와 같이 구성해야한다. 하지만 RDB에서는 처음부터 양방향으로 접근해 조회할 수 있다. 이를 구성하려면 Team객체를 아래와 같이 변경하면 된다. @Entity public class Team{ @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "team") // Collection 추가 List members = new ArrayList(); ... } // 조회 Team findTeam = em.find(Team.class, team.getId()); // 역방향 조회 int memberSize = findTeam.getMembers().size(); 연관관..
[JPA] 연관관계 매핑 연관관계 매핑 객체를 테이블에 맞추어 모델링 할 경우 외래 키 식별자를 직접 다룬다. DTO // Member @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; private int age; @Column(name = "TEAM_ID") private Long teamId; // Team @Id @GeneratedValue private Long id; private String name; // 팀을 저장할 때 Team team = new Team(); team.setName("teamA"); em.persist(team); // 회원을 저장할 때 Member member = new Member(); m..
[JPA] JPA 필드와 컬럼 매핑 JPA 필드와 컬럼 매핑 데이터베이스 스키마 자동 생성하기 DDL을 애플리케이션 실행 시점에 자동 생성 테이블 중삼 -> 객체 중심 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 이렇게 생성된 DDL은 개발 장비에서만 사용 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용 hibernate.hbm2ddl.auto (어지간해서는 개발단계에서만 사용. 운영단계 사용 x) create : 기존테이블 삭제 후 다시 생성 create-drop : create와 같으나 종료시점에 테이블 DROP update : 변경분만 반영 (운영DB에는 사용하면 안된다.) validate : 엔티티와 테이블이 정상 매핑되었는지만 확인 none : auto 기능을 사용하지 않음. 위와 같..
[JPA] JPA 기본과 매핑 JPA 기본과 매핑 객체 매핑 @Entity : JPA가 관리할 객체 @ID : DB PK와 매핑할 필드 persistence.xml JPA설정 파일 /META-INF 폴더 안에 위치 javax.persistence로 시작 : JPA 표준 속성 hibernate로 시작 : 하이버네이트 전용 속성 jdbc드라이버나 DB속성등을 설정. DB 방언 (Dialect) -> hibernate의 속성중 하나 JPA는 특정 데이터베이스에 종속적이지 않은 기술 각각의 데이터베이스가 제공하는 SQL 문법과 함수가 조금씩 다름. -> 가변 문자 : MySQL은 VARCHAR, Oracle은 VARCHAR2 -> 문자열을 자르는 함수 : SQL표준은 SUBSTRING(), Oracle은 SUBSTR() -> 페이징 : My..
[JPA] JPA를 사용하는 이유 JPA를 사용하는 이유 현 상황 지금 시대는 객체를 관계형 DataBase에 저장한다. 관계형 DB는 SQL을 필수로 사용해야한다. 하지만 비슷한 Query가 수도없이 반복된다. 만약 이미 만들어져 있는 서버에 DTO를 수정해야한다면? 개발한 프로그램의 규모가 크면 클수록 방대한 양의 수정이 필요하게 된다. 객체 vs 관계 언어는 객체지향을 사용한다.(상속,다형성,정보은닉 ...) 데이터는 관계형 DB에 저장한다. -> 패러다임의 불일치 관계형 DB에는 상속관계가 존재하지 않는다(있는 DB도 있긴 하지만 보통 없다.) 프로그램을 설계하고 객체구조를 만들어 놓으면 그 데이터들을 저장하기 위해 객체를 분해해서 관계형으로 다시 설계가 필요하다. 또한 저장된 데이터를 꺼내 쓰기 위해 중간에 Mapping작업이 ..
[백준] 22942번 - 데이터 체커 (java) Baekjoon 22942 - 데이터 체커 (클릭 시 이동) 문제 원 이동하기 2 문제를 만들고 만든 데이터가 문제의 조건에 맞는지 확인하는 코드를 작성해야한다. 해당 문제의 데이터는 아래 조건들을 만족해야한다. 모든 원의 중심 좌표는 x축 위에 존재해야 한다. N개의 원 중 임의의 두 원을 선택했을 때, 교점이 존재하지 않아야 한다. 즉, 하나의 원이 다른 원 안에 존재하거나 외부에 존재한다. 데이터 형식은 원의 개수 N이랑 각 원의 중심 x좌표, 원의 반지름 r만 주어진다. 따라서, 2번 조건을 만족하는지만 확인하면 된다. 주어진 데이터가 해당 조건을 만족하는지 확인해보자. 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 (하단 참고) 1024 MB 390 103 67 32.843% 입..