Java 16

[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] 영속성 전이

영속성 전이 엔티티 간의 관계에서 한 엔티티의 변경이 관련된 다른 엔티티에도 전파되는 동작을 의미합니다. 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

[Java] 메타 애너테이션

메타 애너테이션(Meta-annotation)이란 다른 애너테이션에 적용되는 애너테이션을 말합니다. 메타 애너테이션은 애너테이션 선언에 사용되며, 그 애너테이션의 동작 방식을 정의합니다. Java에는 다음과 같은 메타 애너테이션이 포함되어 있습니다: @Retention: 애너테이션이 유지되는 시점을 지정합니다. RetentionPolicy.SOURCE는 컴파일 이후에는 제거되며, RetentionPolicy.CLASS는 컴파일러가 클래스 파일에 기록하지만 JVM이 무시하며, RetentionPolicy.RUNTIME은 JVM이 클래스를 메모리에 로드할 때까지 유지되므로 런타임 환경에서도 해당 애너테이션을 읽을 수 있습니다. @Target: 애너테이션이 적용될 수 있는 Java 요소의 종류를 지정합니다. ..

Java 2023.07.02

[Java Spring] HttpServletResponse

1. HttpServletResponse Servlet API의 일부로, 서버에서 클라이언트로 응답을 전송하는 데 사용됩니다. HTTP 응답에는 상태 코드, 헤더, 본문과 같은 정보가 포함될 수 있습니다. 주요 메서드들을 보여드리면, setStatus(int sc): HTTP 응답 상태 코드를 설정합니다. setHeader(String name, String value): 주어진 이름과 값으로 HTTP 응답 헤더를 설정합니다. addCookie(Cookie cookie): HTTP 응답에 쿠키를 추가합니다. sendRedirect(String location): 클라이언트에게 지정된 위치로 리다이렉트하도록 요청합니다. getWriter(): 응답 본문에 쓰기 위한 PrintWriter를 반환합니다 get..

Java 2023.07.02

[Java] split 메서드

Java의 `split` 메서드는 문자열을 구분자를 기준으로 나누어 배열로 반환합니다. 이 메서드는 `String` 클래스의 일부로 제공되며, 주로 두 가지 형태가 있습니다. 1. split(String regex) 이 형태의 메서드는 하나의 매개변수를 취합니다. 이 매개변수는 정규표현식을 나타내며, 이 정규표현식에 따라 문자열이 분리됩니다. String text = "apple,banana,orange"; String[] fruits = text.split(","); // 결과: ["apple", "banana", "orange"] 2. split(String regex, int limit) 이 형태는 매개변수를 두 개 취하며 첫번째는 정규표현식, 두번 째는 분리할 최대 항목 수입니다. String t..

Java 2023.06.17

[Java] substring 메서드

Java 프로그래밍 언어에서 substring 메서드는 문자열의 특정 부분을 추출하여 새로운 문자열로 반환하는 데 사용됩니다. Java의 String 클래스에는 두 가지 주요 형태의 substring 메서드가 있습니다. substring(int beginIndex): 이 형태의 메서드는 하나의 매개변수를 취합니다. 이 매개변수는 추출할 부분 문자열의 시작 인덱스를 나타냅니다. 반환된 문자열은 이 시작 인덱스부터 원본 문자열의 끝까지 포함합니다. 인덱스는 0부터 시작합니다. String text = "Hello, World!"; String partialText = text.substring(7); // 결과: "World!" substring(int beginIndex, int endIndex): 이 형..

Java 2023.06.17