728x90

JAVA 57

[JPA] JPA란 무엇인가?

JPA(Java Persistence API) : 자바 진영의 ORM 기술 표준 그렇다면 ORM은? (Object Relational Mapping) ORM은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻. ORM프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 왜 JPA를 사용해야 하는가? 1) 생산성 JPA를 사용하면 다음 코드처럼 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를 전달하면 된다. INSERT SQL을 작성하고 JDBC API를 사용하는 지루하고 반복적인 일은 JPA가 대신 처리해준다. jpa.persist(member);//저장 Member member = jpa.find(memberId);//조회 그렇기때문에 지루하고 반복적인 ..

JAVA 2021.12.21

[Java] Java 8 / Java 11 차이 자바

연습을 할땐 자바 11을 주로 사용하는데, 프로젝트 부분에 있어서는 안정성을 좀 추구하다보니 자바 8을 사용하는일이 있다. 2개를 쓰다가 문득 이 2개의 차이점이 무엇일까? 라는 궁금증이 생겼다. Java 8 Java 11 애플릿 뷰어 도구 사용 가능 애플릿 뷰어 도구 사용 불가 AWTUtilities 클래스 사용하지 않는것이 좋음 AWTUtilities 클래스 사용 불가 String 문자열 관련 메소드가 적다 isBlank(), line(), repeat(n), stripLeading(), stripTrailing(), strip() 같은 새로운 String 문자열 방법이 도입됨 람다 파라미터에는 특수 변수가 사용되지 않음 람다식에 사용할 var 변수를 사용 할 수 있음 Java Deployment T..

JAVA 2021.11.01

[Java] enum의 개념과 사용법

Enum Class란? 열거형이라고 부르며, 서로 연관된 상수들의 집합을 의미한다. 기존에 상수를 정의할때는 final static String과 같은 문자열이나 숫자로 나타냈었는데, enum을 사용하면 보다 코드의 가독성을 높힐 수 있다. 그렇다면 enum을 쓰게 되면 우리가 얻을 수 있는건 무엇일까? 1. 코드가 단순해지고, 가독성이 좋아진다. 2. 인스턴스의 생성과 상속을 방지하여 상수값의 안정성이 보장된다. 3. enum을 이용해 새로운 상수들의 타입을 정의하므로써 정의한 타입 외의 타입을 가진 데이터값을 캄파일시 체크 할 수 있다. 4. enum이라는 키워드를 통해 구현의 의도를 파악 할 수 있다.(열거) public class Example { //기존에 상수를 정의하는 방법 public st..

JAVA 2021.10.19

[Spring] IoC, DI, 컨테이너

IoC (Inversion of Control) - 제어의 역전 - 프로그램의 제어 흐름을 개발자가 결정하는 것이 아니라, 외부에서 결정을 하는 것. 여기서의 흐름은 메소드나 객체의 호출을 의미. - 객체를 개발자가 Test test = new Test(); 이런식으로 만드는것이 아니라 스프링이 스스로 객체를 생성해서 필요한곳에 사용 할 수 있게 해준다. -> 기존의 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행을 했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다는 말씀. 프로그램의 제어 흐름을 직접적으로 하는 것이 아닌 외부에서 관리하는 것을 우리는 제어의 역전! 이라고 부른다. ※ 프레임워크 vs 라이브러리 - 프레임워크는 내가 작성한 ..

JAVA 2021.10.19

[Java] Array 배열 Controller VO로 받기 파싱

자바를 이용하면서 MVC패턴을 통해 Controller에서 데이터를 주고받는일이 있다. 기존 JSP에서는 제목 ${testVO.title} 내용 ${testVO.content} 이름 ${testVO.name} 번호 ${testVO.bno} 이러한 형태로 데이터를 주고 받으면서 조회, 수정, 삭제 기능을 수행었는데, 같은 기능을 다른 방법으로 시도해보고 있었다. JSP에서 다른 JSP에서 화면이동 할 필요 없이 1개의 페이지에서 ajax를 이용하여 데이터의 정보를 조회나 수정을 하고싶었다. 쉽게 말하자면 댓글 기능과 비슷하다고도 볼 수 있다. ajax로 데이터 처리를 하고 $.each(result, function(index, view) 의 패턴으로 Controller에서 데이터를 잘 가지고와서 Web 화..

JAVA 2021.10.18

[Java] 입출력 BufferedReader / BufferedWriter

알고리즘 공부하다가 Scanner를 사용하는일이 있었는데, 여러 예제를 찾아보니 BufferedReader와 BufferedWriter가 알고리즘 측면에서 더 효율이 높다는것을 발견했다. 초기 System.out.print할 데이터의 양이 적다면, 큰 차이는 안난다고하는데, 데이터의 양이 커질수록 Scanner와 BufferedReader/BufferedWriter의 차이는 더 발생한다고한다. BufferedReader / BufferedWriter 이름에서도 알 수 있겠지만, 이것은 각각 Reader와 Writer. 입출력을 담당하고 있다. 버퍼를 통해서 입출력을 전달해준다고한다. 그렇다면 왜? BufferedReader / BufferedWriter가 Scanner보다 더 효율이 좋은 이유는 무엇일까..

JAVA 2021.10.03

[Java] String을 Date 타입으로 변환 할 때

자바와 데이터베이스 연동중 날짜를 웹으로 가져오는데, 날짜를 yyyy-mm-dd 형태로 가져오는게 아니라 이상한 숫자로 ex) 670089412100 식으로 가져고 와서 검색을 해보았다. 날짜정보를 가져와야하는데 String이 아니라 Data 타입으로 적용되어 있지만, Oracle에는 Date 클래스가 2종류라는것을 알게 되었다. java.util.Date : 날짜타입과 연동불가 java.sql.Date : 날짜타입과 연동 가능 Date 타입의 Import를 util에서 sql으로 변경을 해주니 내가 원하는 yyyy-mm-dd 값을 잘 가지고 왔다. mysql에서 실험해봤으나 동일하게 적용되었음!

JAVA 2021.08.19

[Java] Junit 실행순서

[Juni5의 실행순서] 출처 : https://www.softwaretestinghelp.com/junit-annotations-tutorial public class OrderServiceTest { MemberService memberService; OrderService orderService; @BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); orderService = appConfig.orderService(); Test Class를 잘 살펴보면 @BeforeEach 애너테이션이 붙은 beforeEach 메서드가 있다. 이는 Te..

JAVA 2021.07.28

[Java] Class에 대하여

클래스와 인스턴스 우리가 'new MemberRepository()' 와 같은 코드를 작성하면 애플리케이션은 'MemberRepository 클래스'를 참조하여 'MemberRepository 인스턴스'를 만들게 됨. 인스턴스를 만든다는 것은 클래스의 정보를 기반으로 메모리에 새로운 객체를 만든다는 의미. 예를들면, 클래스는 붕어빵 틀에 인스턴스는 붕어빵에 비유 가능. 붕어빵 틀을 이용하여 붕어빵을 만들수 있지만 붕어빵 틀과 붕어빵은 서로 다른것처럼. 클래스는 필드(멤버변수)와 메서드를 가질 수 있음. 그리고 필드와 메서드에는 static 키워드를 붙일 수 있음. static 이 붙은 필드나 메서드는, '인스턴스의 소유'가 아닌, '클래스의 소유'가 됨. 클래스 소유의 뜻 클래스의 소유라는 뜻은, 어떤 ..

JAVA 2021.07.28

[Java] Spring Repository 생성시 final 붙이는 이유

1. 위와 같이 레포지토리 생성 시 final을 붙이는 이유가 무엇일까? MemberRepository 타입의 memberRepository 객체를 다른 객체로 바꾸지 않기 위해 final 키워드를 붙임 2. final은 불변의 객체인 경우 or Read only인 경우에만 붙인다고 알고있는데, join 메서드를 실행하게 되면 레포지토리의 store 변수에 데이터가 추가되어 결국 변화가 생기는 것 아닌가? 불변의 대상을 잘못 알고 계시는거 같음. 예시를 들어 설명. --- 1. 마우스를 상속 받은 G102, GPro 클래스 + price의 초기값은 0, versionUp 함수를 호출 할 때 마다 price는 1씩 증가. 2. Mouse를 Gpro 타입으로 생성하고, mouse를 G102로 바꾸려고 할 때..

JAVA 2021.07.28
728x90