JAVA/JAVA2 42

[JAVA] MyBatis & JPA 특징과 차이점 (SQL Mapper/ORM)

지금까지 학교나 학원에서 공부를 하면서 MyBatis 만 접하고 사용했다. 물론 MyBatis 도 Servlet, DB에 대한 지식이 있어야 하지만 JPA와 비교했을때 더 학습하기 쉽다고 느껴지는 것과 우리나라의 많은 회사에서 MyBatis를 사용하기 때문에 많이 가르치고 배우는 것 같다. 하지만 세계적으로 JPA를 사용하는 비율이 높아지고 있고 우리나라 역시 JPA 관심도가 높아지고 있다는 점을 알고 공부하던 중 MyBatis와 JPA의 특징과 차이점을 확실히 정리하고 넘어가려고 한다. MyBatis와 JPA를 알기 전 먼저 SQL Mapper와 ORM (Object Relational Mapping) 프레임워크에 대한 이해가 필요하다. 데이터들이 프로그램이 종료되어도 사라지지 않고 어떤 곳에 저장되는..

JAVA/JAVA2 2023.11.12

[JAVA] JDBC : DB 연결하기

자바를 공부하면 DB와 연결하기 위해 제일 기본적으로 배우는 방법이 JDBC 드라이버로 연결하는 방법이다. JDBC는 Java Database Connectivity의 약어로 자바와 데이터베이스를 연결해 SELECT, INSERT, UPDATE, DELETE와 같은 쿼리문을 사용할 수 있도록 해준다. Oracle과 MySQL 모두 사용할 수 있다. DB 로딩 & 연결 public class UserDAO { private Connection conn; private ResultSet rs; public UserDAO() { try { String dbURL = "jdbc:mysql://localhost:3306/projectName?useUnicode=true&characterEncoding=UTF-8"..

JAVA/JAVA2 2023.11.11

[java2] #40 - Generic (제네릭)

Generic (제네릭) 프로그램에서 변수를 선언할 때, 메서드에서 매개변수를 사용할 때도 모든 변수는 자료형이 있다. 대부분은 하나의 자료형으로 구현하지만 변수나 메서드의 자료형을 필요에따라 여러 자료형으로 바꿀 수 있다면 프로그램이 훨씬 더 유연해질 것이다. 이처럼 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍 하는 것을 'Generic Programming (제네릭 프로그래밍)' 이라고 한다. '제네릭 프로그램'은 참조 자료형이 변환될 때 컴파일러가 검증을 해 꽤 안정적이다. '컬렉션 프레임워크'의 많은 부분이 이 제네릭으로 구현되어 있다. 컬렉션 프레임워크에 대한 내용 ↓ [JAVA 기본/java2] - [java2] #17 - Collection Frame..

JAVA/JAVA2 2022.11.30

[java2] #39 - TreeSet, TreeMap

Collection Framework는 검색 기능을 강화시킨 TreeSet과 TreeMap을 제공하고있다. 이 컬렉션들은 이진 트리(binary tree)를 이용해서 계층적(tree) 구조를 가지면서 객체를 저장한다. Collection Framework 자료 [JAVA 기본/java2] - [java2] #17 - Collection Framework(Set/List/Map), Iterator [java2] #17 - Collection Framework(Set/List/Map), Iterator 컬렉션 프레임 워크 컬렉션 프레임 워크란 데이터를 저장하는 클래스들을 표준화 한 설계이며 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다. Set, List, Map은 데 yoon..

JAVA/JAVA2 2022.11.27

[java2] #38 - Templete Method

템플릿 메서드 추상 메서드나 구현된 메서드를 활용해서 코드의 흐름(시나리오)를 정의하는 메서드이며 전체 일을 수행하는 구조를바꾸지 않으면서 특정 단계 수행 내역을 바꾸는 패턴을 의미한다. final 키워드로 선언해 자식 클래스에서 오버라이딩 할 수 없게 만든다. 프레임워크에서 많이 사용하는 설계 패턴이며 추상 클래스로 선언된 부모 클래스에서 템플릿 메서드를 활용해 흐름을 정의하고 자식 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언해 자식 클래스에서 오버라이딩하도록 한다. 예제 package com.it.abstractClass; public abstract class Car { //자식 클래스에서 반드시 구현되어야 하는 부분은 추상 클래스에서 추상 메소드로 선언한다. public abstr..

JAVA/JAVA2 2022.11.24

[java2] #37 - extends, Override, super

상속 자바에서 상속은 부모클래스의 메서드와 변수가 같은 멤버와 자원을 자식 클래스에서 사용할 수 있음을 의미한다. 상속을 사용하면 중복된 코드를 줄이고 코드의 재사용성을 높여 유지보수가 편리하다. 부모 클래스 : parent class, 기반 클래스, super class, 상위 클래스 자식 클래스 : children class, 후손 클래스, sub class, 하위 클래스 상속을 받게 되면 부모 클래스의 필드, 메서드와 같은 멤버 등을 물려받게 된다. 하지만 접근제어자가 private인 멤버는 불가능하며 부모 클래스와 패키지가 다를 경우 접근제어자가 default인 멤버도 상속 불가능하다. 상속 형식 class 자식클래스명 extends 부모클래스명 { } 자바에서는 하나의 자식클래스가 여러개의 부모..

JAVA/JAVA2 2022.11.24

[java2] #36 - PrintWriter (Text File Write Test)

텍스트 파일에 데이터를 저장하는 printWriter를 사용해 키보드로 입력받은 데이터를 파일에 저장하는 코드를 작성해보자 package com.it.textfileio; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Scanner; public class TextFileWriteTest { public static void main(String[] args) { Scanner sc = null;//텍스트 파일로 저장할 데이터를 입력받는 Scanner PrintWriter pw = null;//텍스트 파일에 데이터를 저장하는 printWriter String filename = "./src/com/kor..

JAVA/JAVA2 2022.11.23

[java2] #35 - StringTokenizer, DecimalFomat Class

StringTokenizer 사용자가 지정하는 구분자를 경계로 데이터를 분리한다. 구분자를 생략하면 공백과 탭을 기본 구분자로 사용하며 구분자로 구분된 데이터를 Token이라 부른다. BufferedReader 클래스의 메서드로 입력을 읽어들일땐 라인 단위로 읽어들일 수 밖에 없다. 꼭 BufferedReader 클래스 뿐만 아니라도 콤마, 공백을 기준으로 분리하거나 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용한다. StringTokenizer 생성자 StringTokenizer를 생성하는 방식은 3가지가 있다. //1. 공백 또는 탭으로 문자열 분리 StringTokenizer st = new StringTokenizer(문자열); //2. 구분자(ex: 콤마, 점)를..

JAVA/JAVA2 2022.11.23

[java2] #34 - Memo Project

MemoVO Class : 한 개의 게시물을 기억하는 클래스 글 번호(자동 증가), 이름, 비밀번호, 메모, 작성일 멤버를 선언한다. * 글 번호를 자동 증가하기 위해 증가시켜서 넣어 줄 다른 멤버도 선언한다. 멤버들을 초기화 할 생성자를 선언한다. -> 이름, 비밀번호, 메모를 입력받고 글 번호는 증가, 날짜는 입력 됐을 때의 시간을 넣어준다. 멤버들의 getter & setter 를 선언한다. (단축키 사용) 원하는 출력 형식으로 toString()을 재정의한다. * MemoList에서 전체 게시물을 출력할 때 MemoVO의 toString() 형식으로 출력된다. package com.koreait.memoList; import java.util.Date; //게시글 1건을 기억할 클래스 public..

JAVA/JAVA2 2022.11.19

[java2] #33 - varargs (가변인자)

Java에는 오버로딩(Overloading)이란 개념이 존재한다. 오버로딩은 같은 이름의 메서드를 매개변수의 타입과 개수를 다르게 정의하여 다양한 메서드를 구현하는 것을 의미한다. 먄약 Varargs 클래스에서 String 타입의 매개변수를 1,2,3 개씩 가지는 print() 메서드를 오버로딩 한다고 해보자. 아마 다음과 같이 구현할 것이다. class Varargs { public void print(String s1) { System.out.println(s1); } public void print(String s1, String s2) { System.out.println(s1 + " " + s2); } public void print(String s1, String s2, String s3) {..

JAVA/JAVA2 2022.11.19