팰린드롬(회문 문자열)
·
문제 풀이/백준 문제풀이
정규식을 사용 ^(부정문자열) , A-Z (A~Z) 를 혼합하여 A~Z에 해당하지 않는 문자열을 모두 공백으로 변환 이전처럼 회문문자열을 비교하는 방식을 사용 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); String target = in.nextLine(); //repalce에서는 정규식을 사용할 수 없다. // ^A-Z : A~Z가 아닌것들 String s = target.toUpperCase().replaceAll("[^A-Z]", ""); StringBuilder sb = new StringBuilder(s); String str..
회문문자열
·
문제 풀이/백준 문제풀이
StringBuffer를 사용해서 문자열을 뒤집었다. toLowerCase를 사용해서 모두 소문자로 변환했다. toLowerCase대신 equalsIgnoreCase로 비교할 떄 대소문자 비교를 무시해도 가능하다. 일치 여부를 삼항식으로 풀이 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); String target = in.nextLine(); target = target.toLowerCase(); StringBuffer sb = new StringBuffer(target.toLowerCase()); String string = sb.re..
중복문자 제거하기
·
문제 풀이/백준 문제풀이
문자의 중복을 없애고 순서대로 정답에 더하면 끝! import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); String target = in.nextLine(); String answer = ""; List arr = new ArrayList(); for(int i=0; i
JPA - 지연로딩과 즉시로딩
·
Spring/JPA
즉시 로딩과 지연 로딩 이전 포스트에서 프록시에 대해 배웠다. 해당 객체와 연관된 다른 객체를 어떤 시점에 불러올지 , 어떤 타입으로 형성되는지 알아봤다. JPA는 이런 프록시 기술을 사용해서 지연로딩을 사용한다. 객체 생성 코드 @Entity @Data @NoArgsConstructor(access = AccessLevel.PROTECTED)//기본생성자 protected @ToString(of = {"id","username","age"}) public class Member extends BaseEntity { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age;..
JPA - Proxy
·
Spring/JPA
프록시 객체란? 해당 엔티티와 연관된 다른 엔티티를 한 번에 조회하지 않고 실제로 필요할 때 프록시 객체를 초기화시켜 사용한다. 프록시 객체를 사용하면 자원 낭비를 막을 수 있다. 지연 로딩을 이해하기 위해 필요한 기초 개념 em.getReference()라는 메서드로 프록시 객체인지 확인 가능 em.find()는 실제 엔티티 객체를 조회하는 메서드 프록시의 특징 실제 클래스를 상속받아서 만들어진다. 하이버네이트가 내부적으로 상속받음 실제 클래스와 동일한 타입처럼 보인다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용한다. 프록시 객체는 실제 객체의 참조대상을 보관한다. 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. 프록시 객체의 초기화 Member객체를 e..
JPA - MappedSuperClass
·
Spring/JPA
@MappedSuperclass란? 객체의 입장에서 공통 매핑 정보가 필요할 때 사용 예를 들어 공통으로 작성일, 작성자, 수정일, 수정자를 공통으로 집어넣고 싶을때 사용한다. 공통 매핑 정보가 필요할 떄 부모 클래스에 선언하고 속성만 상속받아서 사용하고 싶을 때 사용한다. 객체에 적용하기 import lombok.Data; import javax.persistence.MappedSuperclass; import java.time.LocalDate; import java.time.LocalDateTime; @Data @MappedSuperclass public abstract class BaseEntity { /** * 작성자 및 작성일 */ private String createdBy; private ..