전체 글78 [Javascript] null 과 undefined 자바스크립트의 타입에는 크게 원시 타입과 객체 타입으로 구분할 수 있고 각각의 타입은 다음과 같다. 원시타입(Primitive Type) 1. 숫자(number) 2. 문자열(string) 3. 불리언(boolean) 4. 심볼(symbol) 5. undefined 객체 타입(Object Type) 6. 객체(object) 이 중 obejct 타입인 null과 undefined를 살펴보자. 자바스크립트에서 null이란 object 타입으로 값이 아직 정해지지 않은 것을 의미한다. undefined는 null과 달리 타입이 정해지지 않은 것을 의미한다. 따라서 자바스크립트에서 초기화되지 않은 변수나 정의되지 않은 변수에 접근할 때 undefined가 반환된다. var num; var str = null; .. 2022. 6. 21. [JPA] DirtyCheck vs merge 준영속(detached) 엔티티 준영속 엔티티란 준영속 상태의 엔티티로 JPA가 더는 관리하지 않는 엔티티, 즉 영속성 컨텍스트에 저장되었다가 분리된 상태인 엔티티를 말한다. 또한, DB에 한번 저장된 엔티티는 식별자가 존재하는데, 기존 식별자를 가지고 있다면 준영속 엔티티로 볼 수 있다. 준영속 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다. /* 준영속 상태로 만드는 방법 */ em.detach(entity); // 특정 엔티티 준영속 상태로 전환 em.clear(); // 영속성 컨텍스트 초기화 em.close(); // 영속성 컨텍스트 종료 Item item = new Item(); item.setId(id); // id가 기존 식별자라면 기존 식별자를 가진 item은 준영속 엔티티라.. 2022. 5. 15. [Network Security] CSRF(Cross Site Request Forgery) CSRF Cross-Site Request Forgery(CSRF)는 웹 어플리케이션 취약점 중 하나로 사이트 간 요청을 위조해 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 요청하게 하는 공격기법이다. 공격자는 피싱으로 유저의 권한을 도용해 사이트에 요청을 보낸다. 유저가 현재 사이트에 인증된 상태, 즉 로그인 상태에서 요청을 받으면 사이트는 유저가 보낸 요청인지 공격자가 권한을 도용해 보낸 요청인지 구분할 수 없다. 따라서 사이트는 공격자가 원하는 요청을 수행하게 된다. 피해자 유저가 개인 계정이라면 개인정보를 변경하거나 금전적 피해 등을 주지만, 피해 유저가 관리자 계정이라면 웹 어플리케이션 전체에 큰 피해를 끼칠 수 있다. 실습 CSRF 실습을 위해 우선 mutillidae 에 회원 가.. 2022. 5. 15. [JPA] getSingleResult() 와 null 토이프로젝트 중 발생한 에러에 대해 원인을 찾고 정리하였다. 당시 상황은 다음과 같다. public Optional findByEmail(String email) { return Optional.ofNullable( em.createQuery("select u from User u where u.email = :email", User.class) .setParameter("email", email) .getSingleResult()); } UserRepository에 findByEmail 메서드를 생성하고 쿼리문의 반환값이 null일수도 있다 생각하여 Optional을 통해 wrapping 했다. private void validateDuplicateUserByEmail(User user) { Optio.. 2022. 3. 22. [JPA] CascadeType.REMOVE vs orphanRemoval = true 토이프로젝트 중 CascadeType.REMOVE 와 orphanRemoval = true 가 헷갈려 둘의 차이를 찾고 정리하였다. 당시 상황은 다음과 같다. @Entity @Getter @Table(name = "orders") public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; @OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @Joi.. 2022. 3. 19. [Java] String vs StringBuilder vs StringBuffer String String 인스턴스 생성 방법에는 다음과 같이 두 가지가 있다. String str1 = new String("java") String str2 = "java" 두 방법으로 생성된 인스턴스는 약간의 차이가 있다. 다음 생성된 String 인스턴스들을 살펴보자 String str1 = new String("java") String str2 = new String("java") String str3 = "java" String str4 = "java" 생성된 String 인스턴스들을 ==을 사용해 비교해 보면 str1과 str2는 다른 인스턴스를 참조하지만 str3와 str4는 같은 인스턴스를 참조한다는 것을 알 수 있다. 왜 이런 차이가 발생할까? String 인스턴스는 Immutable한 .. 2022. 3. 17. 이전 1 ··· 6 7 8 9 다음