try{
//예외가 발생할 수 있는 코드
//파일 읽기, 네트워크 통신 등
}
catch(IOException e){
//IOException 예외를 처리하는 코드
//e.printStackTrace(); 예외 정보 출력
//다른 처리 작업 수행 가능
}
finally{
//예외 발생 여부와 관계없이 항상 실행되는 코드
//리소스 해제 등
}
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());
}
}
}
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가 외래 키의 주인이다.