Java 35

애플리케이션 구현 준비 및 회원/상품 도메인 개발

애플리케이션 아키텍처 계층형 구조 사용, 단방향 controller, web: 웹 계층 Controller에서 Service 뿐만 아니라 Repositoty도 접근 가능 (단방향이므로) service: 핵심 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용, DB 접근 domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용가능 패키지 구조 jpabook.jpashop domain exception repository service web 개발 순서: 서비스, 리포지토리, 도메인 계층 개발 (웹 관련 없는 핵심 비즈니스 로직) 테스트 케이스를 작성해서 검증 마지막에 컨트롤러, 웹(타임리프) 계층 적용 API 개발 및 성능 최적화 회원 도메인 개발 구..

Java/JPA 2022.05.23

도메인 분석 설계 - 간단 쇼핑몰 예제

[목차] 요구사항 분석 도메인 모델과 테이블 설계 엔티티 클래스 개발 엔티티 설계 시 주의점 요구사항 분석 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구 사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다 도메인 모델과 테이블 설계 도메인 모델 각 테이블의 id가 PK 임베디드 타입(값 타입) Address, 재활용가능 ❗ 연관관계 주인 ❗ 양방향 연관관계에서는 연관관계 주인을 정해야 한다, 일대다 관계에서 多에 외래키 존재, 이를 연관관계 주인으로 한다. → 정석적인 방법임! 주인(多) 쪽에서 값 세팅 ..

Java/JPA 2022.05.23

프로젝트 생성 및 View 환경 설정(Thymeleaf)

프로젝트 생성 IDE : IntelliJ JAVA 8 JPA 자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는 API 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 Framework : SpringBoot Test library : JUnit4 Database : RDBMS(MySQL) 프로젝트 생성 에러 *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be con..

Java/JPA 2022.05.17

생성자(constructor)

자바의 정석 Chapter 소제목 6. 객체지향 프로그래밍 5. 생성자(constructor) 생성자란? 생성자는 인스턴스가 생성될 때 호출되는 ‘인스턴스 초기화 메서드’입니다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용됩니다. |참고| 인스턴스 초기화란 인스턴수 변수들을 초기화하는 것을 뜻한다. 생성자 역시 메서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다릅니다. 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지는 않고, 단지 아무것도 적지 않습니다. |참고| 생성자도 메서드이기 때문에 리턴값이 없다는 의미로 void를 붙여야 하지만, 모든 생성자가 리턴값이 없으므로 void를 생략할 수 있게 한 것이다. 생성자의 조건 💡 1. 생성자..

오버라이딩(overriding)

자바의 정석 Chapter 소제목 7. 객체지향 프로그래밍 2. 오버라이딩(overriding) 오버라이딩이란? 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것(재정의)을 오버라이딩이라고 합니다. 2차원 좌표계의 한 점을 표현하기 위한 Point클래스가 있을 때, 이를 조상으로 하는 Point3D클래스 - 3차원 좌표계의 한 점을 표현하기 위한 클래스 코드를 작성해보았습니다. class Point { int x; int y; String getLocation() { return "x :" +x+ ", y :" +y; } } class Point3D extends Point { int z; String getLocation() { // 오버라이딩 return "x :" +x+ ", y :" +y+ ..

오버로딩(overloading)

자바의 정석 Chapter 소제목 6. 객체지향 프로그래밍 4. 오버로딩(overloading) 오버로딩이란? 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 합니다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있습니다. 이처럼 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 ‘메서드 오버로딩’ , 짧게 줄여서 오버로딩이라 합니다. 오버로딩의 조건 오버로딩이 성립하기 위해서는 다음과 같은 조건을 만족해야 합니다. 💡 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 위 조건을..

Scanner보다 빠른 입력 BufferedReader, StringTokenizer

알고리즘 문제를 풀 때 입출력을 좀 더 빠르게 해야 할 경우가 생깁니다. 그중 오늘은 입력 클래스를 정리하려 합니다. 저는 원래 쓰기 간편한 Scanner를 주로 이용하였었는데요, 같은 문제를 풀었을 때, Scanner와 BufferedReader를 사용했을 때의 처리속도가 2배 이상 난 경우도 있었습니다. 이번 포스팅 정리를 통해서 BufferedReader, StringTokenizer를 이해하는 시간을 가져보도록 하겠습니다. Scanner // Scanner 사용 시 입력 형태. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // int String s1 = sc.next(); // String String s2 = sc.nextLine()..

StringBuffer클래스와 StringBuilder클래스

자바의 정석 Chapter 소제목 9. java.lang패키지와 유용한 클래스 1.1.3 StringBuffer클래스와 StringBuilder클래스 알고리즘 문제를 풀거나 남들이 적어둔 코드를 보다 보면 문자열을 String이 아닌 StringBuffer 또는 StringBuilder를 사용해서 구현한 것을 볼 수 있었습니다. String클래스, StringBuffer클래스, StringBuilder클래스를 비교 분석하면서 관련 메서드까지 정리하는 시간을 가져보도록 하겠습니다. StringBuffer클래스 String클래스는 지정된 문자열을 변경할 수 없지만 StringBuffer클래스는 변경이 가능합니다.(mutable) 내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며 , Strin..

배열의 얕은 복사, 깊은 복사

자바에서 객체를 복사할 때는 얕은 복사, 깊은 복사가 있습니다. 얕은 복사의 경우 객체의 주소 값을 복사하는 것이고 깊은 복사는 실제값을 복사해서 이 값을 새로운 메모리 공간에 복사하는 것입니다. 얕은 복사의 경우 여러 객체가 같은 주소를 참조하고 있기에 하나의 값이 변경되면 다른 대상의 값 또한 변경되는 문제가 발생하지만 깊은 복사는 이러한 문제가 발생하지 않습니다. 1차원 배열의 얕은 복사(Shallow Copy) public class Copy { public static void main(String[] args) { int[] a = {1,2,3,4,5}; int[] b = a; System.out.println(Arrays.toString(a)); // [1, 2, 3, 4, 5] System..

배열 오름차순, 내림차순 정렬하기

알고리즘 문제를 풀 때, 입력을 받은 후 정렬하는 경우가 많습니다. 저의 경우 오름차순은 여러 번 사용했던 터라 메서드를 알고 있었지만, 내림차순을 할 때는 잠시 망설였던 경험이 있습니다. 독자분들은 바로바로 사용하실 수 있게 이번 기회에 암기하고 가시면 좋을 것 같습니다. 공부 후 관련 알고리즘 문제까지 푸시는 것을 추천합니다. [백준 2217번] 로프 [백준 2217번] 로프 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는.. lealea.tistory.com 배열의 오름차순 정렬 Arrays.sor..