일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- github api
- System.in
- 브릿지 메소드
- 자바할래
- System.out
- auto.create.topics.enable
- Switch Expressions
- 제네릭 와일드 카드
- 스파르타코딩클럽
- 제네릭 타입
- 자바스터디
- 람다식
- 프리미티브 타입
- raw 타입
- 합병 정렬
- System.err
- 상속
- Study Halle
- 접근지시자
- 정렬
- annotation processor
- 함수형 인터페이스
- 로컬 클래스
- throwable
- 항해99
- yield
- 익명 클래스
- junit 5
- 바운디드 타입
- docker
- Today
- Total
목록분류 전체보기 (253)
코딩하는 털보
객체 지향 프로그래밍 12. 객체 간 협력 객체 지향 프로그램은 객체를 정의 하고 객체 간의 '협력'을 구현한 프로그램 학생, 버스, 지하철 객체 간 협력 프로그램 학생 package cooperation; public class Student { String studentName; int grade; int money; public Student(String studentName,int money) { this.studentName = studentName; this.money = money; } public void takeBus(Bus bus) { //버스 객체와의 협업 bus.take(1000); this.money -= 1000; } public void takeSubway(Subway subw..
객체 지향 프로그래밍 11. this에 대하여 this의 역할 자신의 메모리를 가리킴 public static void main(String[] args) { BirthDay day = new BirthDay(); day.setYear(2000); //setYear 메서드에 this가 있을때 생성된 인스턴스(day)의 메모리 } 생성자에서 다른 생성자를 호출 함 public Person() { //age = 10; //this로 다른 생성자를 호출할때 그위에 다른 statement는 올 수 없다. this("이름 없음",1); //아래의 생성자 호출하여 변수 초기화 } public Person(String name,int age) { this.name = name; this.age = age; } 인스턴..
객체 지향 프로그래밍 09. 정보 은닉 접근 제어자 : 변수, 메서드, 생성자에 대한 접근 권한 지정 public : 완전 공개 private : 해당 클래스 내에서만 공개 protected : 상위 클래스의 private변수를 하위 클래스에서 public으로 쓰고 싶을 때 default : 같은 패키지 내에서만 공개 정보은닉 클래스 내부의 정보에 접근하지 못하도록 함 (private 접근 제어자를 통한 정보 은닉) private를 외부에서 접근하게 하려면 public 메서드 제공 package hiding; public class MyDate { private int day; private int month; private int year; private boolean isValid=true; //멤버..
객체지향 쿼리 언어 (JPQL) JPA는 다양한 쿼리 방법을 지원한다. (JPQL, JPA Criteria, QueryDSL, 네이티브 SQL, JDBC API 직접 사용) JPA를 사용하면 엔티티 객체를 중심으로 개발하게 된다. 검색을 할 때도 테이블이 아닌 객체를 대상으로 검색을 할 필요가 있다. 이때, 모든 DB를 객체로 변환하는 것은 사실상 불가능하기 때문에 애플리케이션에서 필요로 하는 데이터만 객체로 변환하기 위해 결국 검색 조건이 포함된 SQL이 필요하게 된다. JPQL : SQL을 추상화한 객체 지향 쿼리 언어이다. JPQL을 통해서 객체를 대상으로 SQL과 유사한 문법으로 쿼리할 수 있다. SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는다. JPA Criteria : 문..
JPA 매핑하기 엔티티 매핑 객체와 테이블 매핑 @Entity, @Table : 객체와 테이블 매핑 @Entity가 붙은 클래스는 JPA가 관리하는 엔티티가 된다. JPA를 사용하여 테이블과 매핑시 필수적이다. 기본생성자가 필요하고 final 클래스, enum, interface, inner 클래스를 사용할 수 없다. 저장할 필드는 final일 수 없다. @Table은 엔티티와 매핑할 테이블을 지정한다.(없으면 엔티티 이름으로 매핑) @Entity @Table(name = "Member") public class Account { @Id private Long id; ... } 데이터베이스 스키마 자동 생성 애플리케이션 실행 시점에 해당 데이터베이스에 적절한 DDL을 자동으로 수행하여 테이블을 생성하는 ..
JPA 내부 구조 영속성 관리 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 "엔티티를 영구 저장하는 환경" 영속성 컨텍스트는 논리적인 개념이며 눈에 보이지 않는다. EntityManager를 이용하여 영속성 컨텍스트에 접근한다. J2SE 환경은 EntityManager와 영속성 컨텍스트가 1:1 J2EE,Spring framework 환경은 EntityManager와 영속성 컨텍스트가 N:1 엔티티의 생명주기 비영속(transient) : 영속성 컨텍스트와 전혀 관계없는 새로운 상태 영속(managed) : 영속성 컨텍스트에 관리되는 상태 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) : 삭제된 상태 try { //transient Account a..
JPA (Java Persistence API) JPA 자바 진영의 ORM 기술 표준 ORM? (Object-Relational Mapping) 객체와 관계형 DB 사이에서 매핑하는 역할을 담당한다. ORM을 통해 객체는 객체대로 DB는 DB대로 설계할 수 있다. JPA의 핵심 SQL 생성 : 개발자의 SQL 작성에 대한 고충을 덜어준다. JDBC 사용 : JPA도 결국은 JDBC API를 통해서 DB에 접근한다. 패러다임 불일치 해결 : 객체지향 프로그래밍과 관계형 데이터베이스 사이의 페러다임 불일치를 해결해준다. JPA는 인터페이스의 모음이다. 개발자는 JPA 표준 인터페이스의 구현체를 사용하게 되는데, 특히 Hibernate를 사용하게 된다. JPA를 사용하면 일반적인 JDBC 프로그래밍에 비하여 ..
Spring Security 폼 인증 스프링 시큐리티 연동 의존성 (부트의 버전 생략 기 사용) org.springframework.boot spring-boot-starter-security 스프링 부트의 시큐리티 자동 설정에 의하여… 모든 요청에서 인증이 필요하고, 기본 계정이 생성된다. (애플리케이션 실행마다 패스워드 바뀜) 스프링 시큐리티 설정 설정 파일 추가 @EnableWebSecurity 애노테이션(부트에서 생략가능), WebSecurityConfigurerAdapter 상속 @Configuration @EnableWebSecurity public class WebConfig extends WebSecurityConfigurerAdapter { } WebSecurityConfigurerAda..
Spring Data JPA Spring Data JPA 원리 JpaRepository 인터페이스 데이터 접근 오브젝트 역할을 하는 매직 인터페이스. @Repository 애노테이션 없이 빈으로 등록 됨. 기본적으로 CRUD 메서드를 제공해준다. public interface PostRepository extends JpaRepository { } @EnableJpaRepository : @Configuration 스프링 설정 클래스에 붙여야 JpaRepository 인터페이스를 사용할 수 있다. (스프링 부트에서는 자동으로 설정된다.) @EnableJpaRepository는 JpaRepositoriesRegistrar.class를 import 하는데, 이 클래스가 JpaRepository 인터페이스를 ..
스프링 MVC 핵심 기술 HTTP 요청 맵핑하기 HTTP Method GET 요청 클라이언트가 서버의 리소스를 요청할 떄 사용 캐싱 가능 (조건적 GET 가능) 브라우저의 기록에 남고 북마크가 가능 URL이 다 보이므로 민감한 데이터에는 맞지 않음 idempotent POST 요청 클라이언트가 서버의 리소스를 수정하거나 새로만들 떄 사용 서버에 보내는 데이터를 POST 요청 본문에 담는다 캐싱 불가능 브라우저 기록에 남지 않고 북마크가 불가능 데이터 길이 제한이 없다 PUT 요청 URI에 해당하는 데이터를 새로 만들거나 수정할 떄 사용 POST와 다른 점은 "URI"에 대한 의미에 있다 POST의 URI는 보내는 데이터를 처리할 리소스 PUT의 URI는 보내는 데이터에 해당하는 리소스 idempotent..