char num = 'A';
System.out.println((int) num); // 65
int num = 65;
System.out.println((char) num); // A
% 모듈 연산으로도 변환할수 있습니다.int num = 1234;
StringBuilder output = new StringBuilder();
for (int i = 0; i < 4; i++) {
output.append((char) (num % 10 + '0'));
num /= 10;
}
System.out.println(output.reverse()); // 1234
int[] arr = new int[26];
NPE (NullPointException) 예외를 피하기 위해 Null 의 여부를 검사해야되는데, Optional 객체는 값을 감싸서 NPE 를 방지 할수록 도와줍니다.
- 다양한 메소드를 지원하는것을 확인할수 있으며, 서칭을 통해 사용하면 될것같습니다.
isPresent 활용true , false 를 반환합니다.( 조건문을 통해 Null 값을 핸들링 할수 있습니다. )
( JPA 에서 많이 사용 한다고 합니다. )
Optional<String> optional = Optional.of("shin");
System.out.println(optional.isPresent()); // true
@Getter @Setter
@Entity
@Table(name = "students")
public class StudentEntity {
@Id // 식별자 지정
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
private String phone;
private String email;
}
@Table(" ") : 데이터베이스 테이블 명을 지정 합니다.@Id : 명시적으로 PK값을 지정 합니다.@GeneratedValue() : DBMS따라 전략을 지정 합니다, 위의 전략은 MYSQL 전략 입니다.( 추후 뒤에서 다룰 예정 )
( DTO = Data Transefer Object )
( age 같은 민감한 정보를 제외 시킬수 있습니다)
@Setter @Getter
public class StudentDto {
private Long id; // entity.id
private String name; // entity.name
private String phone; // entity.phone
private String email; // entity.email
// 정적 메소드 활용하여 DTO 클래스로 변환
public static StudentDto fromEntity(StudentEntity studentEntity){
StudentDto studentDto = new StudentDto();
studentDto.setId(studentDto.getId());
studentDto.setName(studentDto.getName());
studentDto.setPhone(studentEntity.getPhone());
studentDto.setEmail(studentDto.getEmail());
return studentDto;
}
}
엔티티 클래스를 DTO 클래스로 변환하는 방법이 여러가지가 있습니다,
위 코드와 같이static(정적) 메소드를 활용하여 변환하는 패턴을
"정적 메소드 패턴 " 이라고 합니다.
- 엔티티 ➡ DTO 클래스 변환
( 반복 되는 로직을 계속 작성 해야함 )
👀 사용 이유 ?변환이 필요하는 작업마다 위 로직을 계속 작성할수 있지만,
정적 메소드 패턴을 사용함으로써, 성능상의 차이는 없지만,
유지보수 측면에서 월등히 좋습니다.
Spring Data Jpa를 사용하려면, DTO 클래스를 다시 엔티티로 변환해야 되는 경우도 있습니다.
Spring Data Jpa가 제공하는 대표적인 CRUD 메소드는 엔티티를 파라미터로 사용합니다.
repository.save(Entity);
repository.delete(Entity);
repository.findById(Id);
// update 로직 TODO
자원을 회수 할때는 PK를 조회하여 회수합니다.
파라미터로 넘어온 pk가 아니라 회수 (찾은)후 update 한다.
( PK 값을 통해 제대로된 Update를 할수 있습니다 )