12월 1일 금요일 TIL

장숭혁·2023년 12월 1일
0

TIL작성

목록 보기
22/60

🚫 예외처리

1. 예외처리 키워드

  • try : 예외가 발생할 수 있는 코드 블록을 try 블록 안에 작성한다.
try{
//예외가 발생할 수 있는 코드
//파일  읽기, 네트워크 통신 등
}
  • catch : try 블록에서 예외가 발생하면 해당 예외를 처리하기 위해 catch 블록을 사용한다. catch 블록은 예외 유형과 일치하는 예외를 처리하고 적절한 작업을 수행한다.
catch(IOException e){
//IOException 예외를 처리하는 코드
//e.printStackTrace(); 예외 정보 출력
//다른 처리 작업 수행 가능
}
  • finally : finally 블록은 에외 발생 여부에 상관없이 항상 실행되는 블록이다. 주로 리소스 해제나 정리 작업에 사용된다.
finally{
//예외 발생 여부와 관계없이 항상 실행되는 코드
//리소스 해제 등
}
  • throw : 예외를 명시적으로 발생시키기 위해 throw 키워드를 사용한다. 이를 통해 사용자가 직접 예외를 발생시킬 수 있다.
public class CustomExceptionExample {
    // 사용자 정의 예외 클래스 생성
    static class MyCustomException extends Exception {
        public MyCustomException(String message) {
            super(message);
        }
    }

    public static void main(String[] args) {
        try {
            throw new MyCustomException("사용자가 직접 발생시킨 예외");
        } catch (MyCustomException e) {
            System.out.println("예외가 발생했습니다: " + e.getMessage());
        }
    }
}
  • throws : 메소드에서 발생할 수 있는 예외를 선언하는 데 사용한다. 이를 통해 해당 메소드를 호출하는 쪽에서 예외를 처리하도록 강제 할 수 있다.
import java.io.IOException;

public class ThrowsExample {
    // IOException을 throws로 선언하여 해당 메소드를 호출하는 쪽에서 처리하도록 함
    static void readDataFromFile() throws IOException {
        // 파일에서 데이터를 읽는 작업 수행
        // 만약 IOException이 발생하면 예외를 호출한 쪽으로 던짐
        throw new IOException("파일을 읽는 도중 예외 발생");
    }

    public static void main(String[] args) {
        try {
            readDataFromFile();
        } catch (IOException e) {
            System.out.println("파일 읽기 도중 예외 발생: " + e.getMessage());
        }
    }
}



👑 외래키의 주인 🗝

외래키(foreign key)의 주인 : JPA에서 양방향 관계를 설정할 때 어떤 엔티티가 외래 키를 관리하고 그 관리 방식을 결정하는 역할을 말한다. 데이터베이스 테이블 간의 관계를 객체 간의 매핑을 표현할 때 중요한 개념이다.

외래키의 주인을 결정하는 방법@OneToMany 와 @ManyToOne 관계에서 mappedBy 속성을 사용하여 설정된다. 이를 통해 한 엔티티가 다른 엔티티에 의해 매핑된 필드를 가지고 있는지를 명시한다. 주인은 mappedBy 속성에 명시된 필드를 통해 외래 키를 관리하고 업데이트한다.

@Entity
public class Department {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(mappedBy = "department")
    private List<Employee> employees = new ArrayList<>();
}
@Entity
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @ManyToOne
    @JoinColumn(name = "department_id")
    private Department department;
}

Department 엔티티와 Employee엔티티의 관계는 일대다의 관계이다. Department엔티티는 @OneToMany(mappedBy = "department")로 설정되어 있다. employee엔티티의 department필드에 의해 매핑되고 있다. 따라서 employee엔티티의 department필드를 통해 외래 키 관리가 이루어지며, Department 엔티티는 외래 키의 주인이 아니다.

employee엔티티가 Department엔티티를 참조하고 있으며, employee엔티티의 department필드를 통해 외래 키가 관리되고 업데이트 된다. employee가 외래 키의 주인이다.

profile
코딩 기록

0개의 댓글

관련 채용 정보