자바 9

영속성이란? JDBC란? ORM이란? JPA란?

1. 영속성(persistence)이란? 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 사라진다. 우리는 데이터들에 영속성을 부여하기 위해서 데이터베이스를 활용하는 것이다. 2. Persistence Framework JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장하는 프레임워크이다. Persistence Framework는 SQL Mapper와 ORM으로 나눌 수 있다. Ex) JPA, Hibernate, Mybatis 등 2-1 SQL Mapper SQL Mapper는 직접 SQL문을 작성..

자바 2022.06.04

JVM이란? JVM 구조 및 작동원리

1. JVM이란? JVM은 'Java Virtual Machine'의 준말로 자바를 실행하기 위한 가상 기계이다. 자바로 작성된 애플리케이션은 모두 이 JVM(가상 기계(컴퓨터))에서만 실행되기 때문에 JVM이 없으면 자바 프로그램을 실행할 수 없다. JVM을 통해서 일반 애플리케이션과 자바 애플리케이션에 차이가 생긴다. 일반 애플리케이션은 OS만 거쳐 하드웨어로 전달되지만 자바 애플리케이션은 JVM을 먼저 거치고 OS와 하드웨어로 도달된다. 따라서 일반 애플리케이션은 OS에 종속적이기 때문에 다른 OS에서 실행하기 위해서는 애플리케이션을 그 OS에 맞게 변경해야한다. 하지만 자바 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS로부터 독립적일 수 있고 이는 프로그램 변경 없이 다른 OS에서도 실행..

자바 2022.05.24

추상클래스, 인터페이스, 추상메서드 정리

확실한 것들만 정리해보았다. 1. 추상 메서드는 반드시 자식 클래스에서 오버라이딩 해야한다. 2. 클래스에 추상 메서드를 만들려면 그 클래스는 반드시 추상 클래스여야 한다. 3. extends가 가능한 경우는 클래스 extends 클래스, 인터페이스 extends 인터페이스만 존재한다. 4. implements가 가능한 경우는 클래스 implements 인터페이스만 존재한다. 5. 인터페이스는 다중상속이 가능하다 6. 클래스는 다중상속이 안된다 7. implements로 상속받으면 무조건 상속받은 인터페이스의 메서드들을 전부 오버라이딩 해야한다. 왜냐하면 인터페이스의 메서드들은 전부 컴파일시에 자동으로 추상 메서드가 되기 때문이다. 하지만 추상 클래스는 추상 메서드뿐만 아니라 일반 메서드가 존재할 수 있..

자바 2022.04.25

JPA 연관관계

1. 단방향, 양방향 단방향, 양방향은 객체에서만 의미있는 연관관계이다. 데이터베이스 테이블은 외래키로 양 쪽 테이블 조인이 가능합니다. 따라서 데이터베이스는 단방향이니 양방향이니 나눌 필요가 없습니다. 테이블끼리 연결된 순간 그냥 양방향이 되는 것이다. 그러나 객체는 참조용 필드(변수)가 있는 객체만 다른 객체를 참조하는 것이 가능합니다. 그렇기 때문에 두 객체 사이에 하나의 객체만 참조용 필드를 갖고 참조하면 단방향 관계, 두 객체 모두가 각각 참조용 필드를 갖고 참조하면 양방향 관계라고 합니다. 엄밀하게는 양방향 관계는 없고 두 객체가 단방향 참조를 각각 가져서 양방향 관계처럼 사용하고 말하는 것입니다. 어떤 연관관계를 선택할지는 프로젝트에서 어떤 객체에서 참조가 필요한지를 고민해보면 됩니다. 2...

자바 2022.02.20

JPA란 무엇인가?

1. JPA란? Java Persistence API의 줄임말로 JAVA가 제공하는 API 이며 SQL을 쓰지 않고 Method를 통해 DB를 조작할 수 있다. 자바로 영구적(Persistence)으로 데이터를 저장하고 다루기 위해서 필요한 API라고 이해하면 된다. JPA는 JAVA로 데이터를 영구적으로 저장하고 다루기 위해서 여러가지 기능을 가지고 있다. 2. JPA 기능 첫번째 기능은 JPA가 ORM 기술이라는 것이다. ORM은 Object Relational Mapping의 준말로 자바에서 만든 object를 데이터베이스의 테이블 형태로 변환하는 기술이다. 다시말해 우리가 JPA의 인터페이스에 따라서 object를 만들어서 데이터베이스에 보내면 자동으로 테이블로 바꿔준다. 두번째 기능은 JPA가 ..

자바 2022.02.06

Spring이란? Spring Boot란?

1. 스프링이란? 자바 기반의 웹 어플리케이션을 만들 수 있는 오픈소스 프레임워크다. 그러면 오픈소스는 뭐고 프레임워크가 뭔지 알아야한다. 2. 프레임워크란? 프레임 = 틀, 워크 = 동작한다. 즉, 틀안에서만 동작하는 것이다. 스프링은 바로 이 틀을 제공해주는 것이고 우리는 그 틀 안에서만 스프링을 사용할 수 있다. 3. 오픈소스란? 오픈소스는 소스코드를 공개한 것이다. 이 말은 우리들이 이 소스코드 내부를 뜯어 고쳐볼 수 있다는 것이다. 따라서 스프링도 실력만 있다면 마음대로 뜯어 고쳐서 사용할 수 있다. 4. 스프링은 IOC 컨테이너를 가진다. IOC는 (Inversior Of Controll)로서 제어의 역전이라는 의미이다. 주도권이 나로부터 스프링에게 넘어간다는 의미다. 원래 객체를 실체화하는 ..

자바 2022.01.28

JVM이란? 객체지향프로그래밍이란?

1. JVM은 Java Virtual Machine의 준말로 자바를 구동하는 환경이다. 자바로 만들어진 소프트웨어는 JVM이라는 가상화된 환경에서 구동되고, 하드웨어나 운영체제에 따라서 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라서 만들어진 JVM이 알아서 해결한다. 즉 하나의 자바 프로그램을 만들면 어떤 환경(어떤 OS)에서도 실행할 수 있는 환경을 구축하는 것이 바로 JVM의 역할이라고 할 수 있다. 2. 객체지향프로그래밍이란? 객체지향 프로그래밍(Object-Oriented Programming)은 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다. 여기서 상태는 변수를 의미하고 행위는 메서드를 의미한다. 이 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램..

자바 2022.01.23

해시맵(Hash Map)이란?

1. 맵이란 무엇인가? 해시맵을 이해하기 위해선 우선 맵을 이해해야한다. 맵은 key와 value값의 구조로 힙영역에 저장되는 객체라고 보면 된다. 2. 해시맵이란? 해시맵은 위의 그림과 같은 구조로 저장된다. key와 value 둘 다 객체들이며 value는 중복될 수 있지만 key는 중복될 수 없습니다. 만일 중복되는 key를 새로 만들경우 기존의 key가 사라지게 된다. key에는 입력한 값을 해싱하여 저장하기 때문에 key값을 찾는데 걸리는 시간이 굉장히 빠르다. 또한 key값에 들어있는 해싱값은 동시에 해당 value값에 대한 주소이기도 하다. 이제 왜 key값이 중복되면 안되는지 이해가 갈 것이다. 3. 구체적인 사용방법 좋은사이트가 있으니 참조하자 [Java] 자바 HashMap 사용법 & ..

자바 2022.01.18

String 비교시 '==' 가 아닌 .equals()를 써야하는 이유

String값을 비교할 때는 왜 ==가 아닌 .equals()함수를 써야할까? 그 이유를 알려면 문자열을 저장하는 방법부터 이해해야한다. 우선 우리가 String a = "hi"라고 하였다가 a = "hello"로 한다면 문자열의 값이 바뀌었다고 생각할 수 있지만 사실 그렇지 않다. String은 primitive 자료형이 아니기 때문에 a는 hi라는 객체를 가르키고 있다가 hello라는 객체를 가리키는 것으로 변경된 것에 불과하다. 그러면 String a = "Hi"와 String a = new String("Hi")는 어떤 차이가 있는 것일까? String a = "Hi" 이 방식으로 a를 만들면 이는 intern()함수를 통해 자동으로 String pool이라는 곳에 저장된다. String Pool..

자바 2022.01.17