Computer - Java
-
JPA 객체 사용 시 instanceof 는 주의해서 사용하자Computer - Java 2024. 6. 30. 00:40
JPA가 굉장히 유용한 툴이라는 것은 사용해보면 모두 알지만, 그럼에도 불구하고 생각 외로 의도하지 않은 동작을 하는 경우가 많다.그 중 최근 내가 겪은 문제들 중 프록시 객체를 사용하기 때문에 주의해야 하는 부분들을 몇 가지 소개하고자 한다. 1. Entity 객체 간 getClass 비교는 절대로 금물!다음 코드를 보고 직관적으로 특정 부분에서 잘못될 수 있다는 부분을 알 수 있겠는가?@Entity@Getter@AllArgsConstructorpublic class User { @GeneratedId private Long id; @NotNull private String name; @NotNull private String phoneNumber; @Overrid..
-
Effective Java - 3장. 모든 객체의 공통 메서드(2/2)Computer - Java 2022. 12. 24. 20:36
item 10. equals는 일반 규약을 지켜 재정의하라 item 11. equals를 재정의하려거든 hashCode도 재정의하라 item 12. toString을 항상 재정의하라 item 13. clone 재정의는 주의해서 진행하라 item 14. Comparable을 구현할지 고려하라 12~14는 10~11에 비해서 상대적으로 쉬운 개념?인거 같다 item 12. toString을 항상 재정의하라 Object.toString : “(클래스명)@(해쉬코드)” 만을 반환 ==> 필요 시 재정의! toString을 잘 구현한 클래스는 사용하기에 훨씬 즐겁고, 그 클래스를 사용한 시스템은 디버깅하기 쉽다 ex. PhoneNumber 클래스를 만들었다면, System.out.println(phoneNumbe..
-
Effective Java - 3장. 모든 객체의 공통 메서드(1/2)Computer - Java 2022. 12. 24. 20:25
Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize) 모두 재정의(override)를 염두에 두고 설계된 것 이들을 잘못 재정의하면 HashMap 등 오동작 가능 item 10. equals는 일반 규약을 지켜 재정의하라 item 11. equals를 재정의하려거든 hashCode도 재정의하라 item 12. toString을 항상 재정의하라 item 13. clone 재정의는 주의해서 진행하라 item 14. Comparable을 구현할지 고려하라 item 10. equals는 일반 규약을 지켜 재정의하라 Object.equals의 경우 해시코드를 비교한다 - 자기자신 아니면 무조건 false 일단 다음과 같은 경우라면 굳이 쓸 필요 ..
-
Effective Java - 2장. 생성과 파괴(3/3)Computer - Java 2022. 12. 23. 21:22
item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 item 6. 불필요한 객체 생성을 피하라 item 7. 다 쓴 객체 참조를 해제하라 item 8. finalizer와 cleaner 사용을 피하라 item 9. try-finally 보다는 try-with-resources를 사용하라 item 7. 다 쓴 객체 참조를 해제하라 가비지 컬렉터를 너무 믿지 말자. 클래스 내에서 직접 메모리 관리를 해야하는 경우 : 임의로 null을 처리하..
-
Effective Java - 2장. 생성과 파괴(2/3)Computer - Java 2022. 12. 23. 19:08
item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 item 6. 불필요한 객체 생성을 피하라 item 7. 다 쓴 객체 참조를 해제하라 item 8. finalizer와 cleaner 사용을 피해라 item 9. try-finally보다는 try-with-resources를 사용하라 item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 java.lang.Math / java.util.Arrays => object보다는 ..
-
Effective Java - 2장. 생성과 파괴(1/3)Computer - Java 2022. 12. 23. 07:36
item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 item 6. 불필요한 객체 생성을 피하라 item 7. 다 쓴 객체 참조를 해제하라 item 8. finalizer와 cleaner 사용을 피해라 item 9. try-finally보다는 try-with-resources를 사용하라 item 1. 생성자 대신 정적 팩터리 메서드를 고려하라. 무조건적으로 정적 팩터리 메서드를 사용하라기보다는 "고려"하라는 것이다. 그만큼 장단점도 명확한..