본문 바로가기

Java , Spring60

[Java] JVM 메모리 구조 java 파일이 자바 컴파일러에 의해 class 파일로 변환되고, class 파일이 Class Loader에 의해 JVM Runtime Data Area에 올라가면 실행엔진에 의해 실행된다. 관련 정리글 https://bangbaeking.tistory.com/87 [Java] JVM , Java compiler, Java 코드 실행과정 JDK,JRE,JVM JVM이란? Java Virtual Machine 자바 가상 기계이다. Java는 운영체제에 종속적이지 않고, 작성된 Java 코드가 JVM에서 OS가 해석할수있는 bytecode로 변환해준다. ( OS에 종속적이지 않다 - 맥에서 작성된 Java bangbaeking.tistory.com Class Loader, Execution Engine, G.. 2024. 1. 12.
[JPA] JPA란? ( ORM, Hibernate, Spring Data JPA) JPA란? JPA(Java Persistence API)는 자바에서 사용하는 ORM(Object Relational Mapping) 기술 표준이다. 자바 애플리케이션과 관계형 데이터베이스 사이의 데이터 영속성을 관리하기 위한 표준화된 인터페이스를 제공하는 기술이다. 즉, JPA는 인터페이스이지 특정 기능을 제공하는 라이브러리가 아니다. 그러면 JPA를 어떻게 사용해야하는것일까? JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 사용해야한다. 대표적인 JPA 구현체는 Hibernate, OpenJPA, EclipseLink등이 있다. ORM 이란? 그러면 ORM이란 무엇일까? ORM 은 Object-Relational Mapping 의 약자로, 객체와 관계형 데이터베이스 간의 매핑을 자동화하는 기술이.. 2024. 1. 11.
[Java] String, StringBuffer, StringBuilder 차이 및 장단점 Java에서 문자열을 다루는 대표적인 클래스에는 String, StringBuffer, StringBuilder가 있다. 각 클래스의 차이점 및 장단점을 정리해보자. String vs StringBuffer / StringBuilder String과 StringBuffer/StringBuilder 클래스의 가장 큰 차이점은 String은 불변(immutable)이라는것이다. String 불변에 대해서는 아래 글에서 다루었다. https://bangbaeking.tistory.com/88 2024. 1. 10.
[Java] String 특징, String Pool Java에서 일반적인 데이터 타입의 비교는 == 연산자를 사용한다. 하지만 String에서는 ==이 아닌 equals 연산자를 사용한다. public class Test { public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; System.out.println(str1.equals(str2)); } } String 변수 생성 String 변수를 생성하는 방법은 2가지가 있다. String str1 = "Hello"; // 리터럴 방식 String str2 = new String("Hello"); // new 연산자 방식 str1 과 str2는 둘다 "Hello"를 저장하고있지만 메모리 관점에서 차이가 있.. 2024. 1. 10.
[Java] JVM , Java compiler, Java 코드 실행과정 JDK,JRE,JVM JVM이란? Java Virtual Machine 자바 가상 기계이다. Java는 운영체제에 종속적이지 않고, 작성된 Java 코드가 JVM에서 OS가 해석할수있는 bytecode로 변환해준다. ( OS에 종속적이지 않다 - 맥에서 작성된 Java 코드는 윈도우에서 돌아간다) 실행과정 Java 코드 (Test.java)는 먼저 JVM이 인식할수있는 Test.class 파일(바이트코드)로 변환해야한다. 자바 컴파일러가 Test.java 파일을 Test.class (바이트코드)로 변환해준다. 이후 JVM의 Class Loader가 .class 파일을 불러와서 Java의 메모리에 올려놓으면 JVM의 실행엔진에서 실행한다. (자바 컴파일러 - JDK를 설치하면 bin 파일에 존재하는 javac.exe 파일) 즉.. 2024. 1. 9.
[Java] next(), nextLine() 차이 다시 Java 기초를 공부하면서 예전에 헷갈렸던 부분을 정리하게되었다. next() 공백을 기준으로 문자열을 입력받는다 버퍼에 입력된 문자열에서 개행문자(\n)를 가져오지 않는다. nextLine() 개행문자 직전까지의 문자열을 입력받는다. (공백을 포함한다) 버퍼에 입력된 문자열에서 개행문자(\n)를 가져온다. 개행 문자를 가져온다는것이 무슨 뜻일까 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1,str2; System.out.println("str1 입력"); str1 = sc.next(); System.out.println("str2 입력"); str2.. 2024. 1. 7.
[JPA] 상속관계 매핑 상속관계 매핑객체에는 상속의 개념이 존재하지만 관계형 데이터베이스에는 상속 관계가 존재하지 않는다.하지만, 슈퍼타입, 서브타입 관계가 객체의 상속 개념과 유사하다. 슈퍼타입, 서브타입 관계란?다음과 같은 관계가 슈퍼타입, 서브타입 관계이다. 해당 관계를  table로 나타낼때 @Inheritance(strategy= InheritanceType.XXX)를 이용한 3가지 방법이 존재한다,JOINED : 조인 전략SINGLE_TABLE : 단일 테이블 전략TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 조인전략 @Inheritance(strategy= InheritanceType. JOINED )정규화가 되어있다.데이터를 저장할때 ITEM과 ALBUM 모두에 쿼리가  들어간다.데이터를 찾을때(f.. 2023. 11. 1.
[JPA] 연관관계 다대일 [N:1] 일대다 [1:N] 일대일 [1:1] 다대다 [N:N] 단방향과 양방향 Table의 경우 외래키 하나로 양쪽 조인이 가능하다. 즉, 방향이라는 개념이 없다. 하지만 객체의 경우 참조용 필드가 있는쪽으로만 참조 가능하다 (이때 한쪽만 참조하면 단방향이다) 다대일 [N:1] DB기준 외래키가 있는 table이 "다" 이다. 일대다 [1:N] 다대일을 뒤집은 모양으로 다대일과 마찬가지로 "다"에 외래키가 있다. 주의사항 : "일" 의 객체에 변경점이 있을때 "다"의 외래키가 변경된다. JoinColumn이 "일"에 있음 (OneToMany) ex) team을 건드렸는데 member table에 업데이트 쿼리가 발생한다. 즉 객체와 table의 차이로 인해 문제(?)가 발생한다 -> 다대일을 사.. 2023. 10. 8.
[JPA] 엔티티 매핑 데이터 베이스 스키마 자동생성 create : 기존 테이블 삭제 후 다시 생성 create-drop : create와 같지만 종료시점에 테이블을 drop한다 update : 변경 부분만 적용 validate : 정상 매핑 되었는지 확인 none : 사용안함 주의사항 - 운영장비에는 절대 create(create-drop), update 사용 금지 @GenertedValue 기본키를 DB에서 만들어준다. (strategy = "GenerationType.Auto")를 사용 영속성 컨텍스트에서 기본키가 필요한데 DB에 들어가기전에는 null 상태이다 그래서 em.persist(entity)를 할때 insert 쿼리가 날라간다. (즉, tx.commit()이 되기전에 쿼리가 날라간다) 양방향 연관관계 tabl.. 2023. 10. 6.