전체 글 42

[portfolio] 블로그 프로젝트 - (1) - CRUD

1. 주특기 주차 복습 하며 포트 폴리오 준비 1주차의 crud 구현부터 해서 보강해가며 더 많은 기능을 구현할 생각입니다. 원래 항해 일정이 있기 때문에 천천히 포스팅할 예정이며 한 번 열심히 만들어보겠습니다. 아쉽게도 프론트는.... 항해에서 제공해준 프론트에 제가 추가할 수 있는 부분은 추가할 예정입니다. 제가 만들 프로젝트는 블로그 프로젝트 입니다. 이 주제를 선택한 이유는 다른 주제 블로그 포스팅을 1년 정도 해왔고 그만큼 접한 기능과 필요하다 생각한 기능이 많았기 때문입니다. 먼저 제가 구현할 패턴에 대해 소개하면 이는 MVC패턴이라고 하며 밑에 링크로 볼 수 있습니다. 2023.06.28 - [항해99] - [항해99 TIL] MVC, DTO, IOC 말그대로 M(model), V(view)..

[mysql] 데이터 베이스 생성 방법 - 콘솔

1. mysql 테이블 만드는 방법 mysql 설치 방법은 검색하면 많이 나오므로 만들었다는 전제로 설명합니다. 먼저 mysql console에서 show databases; 비어 있다면 아무것도 없고 저는 만들어 놓은 db가 있어서 이렇게 가렸습니다. 그렇다면 데이터 베이스를 생성하려면 create database test;를 통해 test라는 db를 만들었습니다. 그럼 확인도 해야겠죠? show databases;를 통해 확인 할 수 있습니다.

mysql 2023.07.20

[Java Spring] @GeneratedValue(strategy = )

1. @GeneratedValue(strategy = ) @GeneratedValue는 주로 엔티티의 기본 키를 자동으로 생성하기 위해 사용됩니다. strategy속성을 통해 식별자를 생성하는 전략을 지정합니다. 이는 MySQL, PostgreSQL, SQL Server 등에서 사용됩니다. GenerationType.AUTO : (기본값) 특정 DB에 맞게 자동 선택. 예를 들어, Oracle의 경우 SEQUENCE를, MySQL의 경우 IDENTITY를 선택. GenerationType.SEQUENCE : DB 시퀀스를 사용하여 기본 키를 할당. @SequenceGenerator 어노테이션과 함께 사용하여 시퀀스 생성기를 정의. 주로 Oracle, PostgreSQL, DB2 등에서 사용. Genera..

Java/SpringBoot 2023.07.20

[Java SpringBoot] CRUD

1. CRUD crud는 Create (생성), Read (읽기), Update (업데이트), Delete (삭제)를 처리하는 연산을 말합니다. 왜 이 작업들을 따로 분류할까? 생각하면 기본이 되기 때문입니다. 우리가 어떤 웹 서비스를 사용한다면 글 생성, 글 읽기, 업데이트, 삭제 등을 생각할 수 있습니다. 그럼 어떤 과정으로 먼저 판을 짜게 될까요? 간단한 CRUD service계층입니다. @Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userReposi..

Java/SpringBoot 2023.07.20

[Java Spring] Orphan Entity delete

Orphan Entity delete @Test @Transactional @Rollback(value = false) @DisplayName("연관관계 제거") void test1() { // 고객 Robbie 를 조회합니다. User user = userRepository.findByName("Robbie"); System.out.println("user.getName() = " + user.getName()); // 연관된 음식 Entity 제거 : 후라이드 치킨 Food chicken = null; for (Food food : user.getFoodList()) { if(food.getName().equals("후라이드 치킨")) { chicken = food; } } if(chicken != ..

카테고리 없음 2023.07.09

[Java Spring] 영속성 전이

영속성 전이 엔티티 간의 관계에서 한 엔티티의 변경이 관련된 다른 엔티티에도 전파되는 동작을 의미합니다. 1) 영속성 전이 추가 @Entity @Getter @Setter @Table(name = "food") public class Food { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private double price; @ManyToOne @JoinColumn(name = "user_id") private User user; } @Entity @Getter @Setter @Table(name = "users") public class User { @Id @GeneratedV..

Java 2023.07.09

[Java Spring] 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading)

1. 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading) 먼저 N대1 양방향 관계라고 생각하겠습니다. 지연로딩과 즉시 로딩은 연관관계 설정의 전략입니다. 1) 지연 로딩과 즉시 로딩 지연로딩은 엔티티를 사용하는 시점에 db에서 데이터를 로딩하는 전략인데 말하자면 데이터가 실제로 사용할 때만 데이터를 가져옵니다. @OneToMany의 내부 코드를 보겠습니다. @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OneToMany { FetchType fetch() default FetchType.LAZY; } 지연로딩과 즉시로딩은 지금 가져올지 필요할 때 가져올지에 문제이기 때문에 설정 Type이 존재합니다. 이를 Fetch..

Java 2023.07.09

[Java] 참조와 접근

1. 참조와 접근 (1) 참조 "참조"는 특정 객체가 다른 객체를 가리키고 있는 상태를 의미합니다. 참조를 통해 우리는 해당 객체의 메소드를 호출하거나, 상태를 변경하거나, 정보를 읽을 수 있습니다. User user = new User(); // 'user' 변수가 User 객체를 참조 (2) 접근 "접근"은 특정 객체의 메소드를 호출하거나, 상태를 읽거나, 변경하는 행동을 의미합니다. String name = user.getName(); // 'user' 객체에 접근하여 'getName()' 메소드를 호출 따라서, 참조는 객체를 가리키는 링크 또는 포인터 같은 것을 의미하며, 접근은 그 링크를 통해 실제로 객체의 내용을 확인하거나 조작하는 행동을 의미합니다...

Java 2023.07.08

[Java] Validation

1) Validation종류 저희 레벨2 플젝에서 @Getter @Setter public class SignupRequestDto { @NotBlank @Size(min = 4,max = 10) @Pattern(regexp = "\[a-z0-9\]_$") private String username; @NotBlank @Size(min = 8,max = 15) @Pattern(regexp = "\[a-zA-Z0-9\`~!@#$%^&_()\_=+|{};:,./?\]\*$") private String password; private boolean admin = false; private String adminToken = ""; } 유저 네임과 비번의 제한을 주었습니다. @Size면 유저네임의 크기를 말합..

Java 2023.07.06

[항해99 TIL] RestTemplate 개념과 예제

1. Validation @NotNull: 해당 필드의 값이 null이 아니어야 함을 나타냅니다. @Null: 해당 필드의 값이 null이어야 함을 나타냅니다. @AssertTrue: 해당 필드의 값이 true여야 함을 나타냅니다. @AssertFalse: 해당 필드의 값이 false여야 함을 나타냅니다. @Min(value): 숫자 필드가 특정 최소값 이상이어야 함을 나타냅니다. @Max(value): 숫자 필드가 특정 최대값 이하이어야 함을 나타냅니다. @DecimalMin(value): 숫자 필드가 특정 최소값(소수점 포함) 이상이어야 함을 나타냅니다. @DecimalMax(value): 숫자 필드가 특정 최대값(소수점 포함) 이하이어야 함을 나타냅니다. @Size(min, max): 문자열, 컬렉..

항해99 2023.07.06