FrameWork
-
ORM - JPA설정FrameWork/ORM 2024. 2. 14. 16:14
JPA 설정 JPA 설정은 영속성 유닛(persistence-unit)이라는 것부터 시작하는데 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다. 그리고 영속성 유닛에는 고유한 이름을 부여해야 하는데 application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test:mem:jpausage 위와 같이 url 속성에 연결해서 `mem:jpausage`와 같이 명시 해주면 된다. JPA 표준 속성 spring.data.username : 데이터베이스 접속 아이디 spring.datasource.password : 데이터베이스 접속 비밀번호 spring.datasource.url : 데이터베이스 접속 URL 하이버네이트 속성 sp..
-
SpringBoot - SpringBoot API 시작하기FrameWork/Spring&Spring-boot 2024. 1. 31. 14:51
SpringBoot API 시작하 Spring Boot의 장점 스프링 부트 어플리케이션은 최소한의 설정 작업만으로도 바로 실행하 수 있다. 스프링 부트가 단독 실행형 프로덕션 등급의 스프링 어플리케이션을 생성할 수 있는 이유는 스프링 부트안에 Java 진영에서 일반적으로 많이 사용하는 WAS Tomcat이 내장형으로 이미 탑재 되어 있기 때문이다. 이외에도 Jetty라든가 Undertow라는 웹 어플리케이션 서버를 내장하고 있기 때문에 실행을 위해서 별도의 서버를 설치할 필요가 없고, 기본적으로 스프링 부트 어플리케이션을 실행하는 것만으로도 웹 어플리케이션을 실행할 수 있게되는 것이다. 물론 개발된 스프링 부트 어플리케이션은 별도의 스프링 MVC 어플리케이션과 마찬가지로 WAR파일, 다시 말해서 웹 아카..
-
ORM - JPA란 무엇인가?FrameWork/ORM 2024. 1. 22. 14:18
JPA란 무엇인가? JPA(JAVA Persistence API)는 자바 진영의 ORM 표준 기술이다. 그렇다면 ORM이란 무엇일까? ORM(Object-Relational-Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해 준다. 예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객첼르 마치 자바 컬렉션 저장하듯이 ORM 프레임 워크에 저장하면 된다. 그러면 ORM 프래임워크가 적절한 INSER SQL을 생성해서 데이터 베이스에 객체를 저장해준다. JPA를 사용해서 DB에 객체 저장 jpa.persist(member);..
-
ORM - ORM과 문제 해결3 (객체 그래프 탐색, 비교)FrameWork/ORM 2024. 1. 22. 11:10
ORM과 문제 해결3 객체 그래프 탐색 객체에서 회원이 소속된 팀을 조회할 대는 다음처럼 참조를 사용해서 연관된 팀을 찾으면 되는데, 이것을 객체 그래프 탐색이라 한다. Team team = member.getTeam(); 위 객체 그래프를 탐색하는 코드다. member.getOrder().getOrderItem()... //자유로운 객체 그래프 탐색 객체는 마음껏 객체 그래프를 탐색할 수 있거야 한다. 그런데 마음껏 객체 그래프를 탐색할 수 있을까? SELECT M.*,T.* FROM MEMBER M JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID member.getTeam(); //성공 member.getOrder(); //실패(null) MemberDAO에서 member 객체를 조..
-
ORM - ORM과 문제 해결2(연관관계)FrameWork/ORM 2024. 1. 22. 10:05
ORM과 문제 해결2 연관관계 객체는 참조를 사용해서 다른 객체와 연관관계를 가지고 참조에 접근해서 연관된 객체를 조회한다. 반면에 테이블은 외래 키를 사용해서 다른 테이블과 연관관계를 가지고 조인을 사용해서 연관된 테이블을 조회한다. 참조를 사용하는 객체와 외래 키를 사용하는 관계현 데이터베이스 사이의 패러다임 불일치는 객체지향 모델링을 거의 포기하게 만들 정도록 극복하기 어렵다. Member 객체는 Member.team필드에 Team 객체의 참조를 보관해서 Team객체와 관계를 맺는다. 따라서 이 참조 필드에 접근하면 Member와 연관된 Team을 조회 할 수 있다. class Member { Team team; ... Team getTeam() { return team; } } class Team..
-
ORM - ORM과 문제 해결1(상속)FrameWork/ORM 2024. 1. 22. 08:51
ORM과 문제 해결 1 ORM 기술은 이런 문제를 어떻게 해결할까? 우선은 OMR 중에도 JPA를 통해 ORM 기술이 이 문제를 어떻게 해결하는지 간단히 알아보자 JPA를 사용하면 객체를 데이터베이스에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하는 것이 아니라 JPA가 제공하는 API를 사용하면 된다. JPA가 개발자 대신에 적절한 SQL을 생성해서 데이터베이스에 전달한다. JPA가 제공하는 CRUD API를 간단히 알아보자. ▼저장 기능 jpa.persist(member); //저장 persist() 메소드는 객체를 데이터베이스에 저장한다. 이 메소드를 호출하면 JPA가 객체와 매핑 정보를 보고 적절한 INSERT SQL을 생성해서 데이터베이스에 전달한다. 매핑정보는 어떤 객체를 어떤 테이블에 ..
-
ORM- SQL을 직접 다룰 때 발생하는 문제점FrameWork/ORM 2024. 1. 20. 19:52
SQL을 직접 다룰 때 발생하는 문제점 관계형 데이터베이스는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소다. 그런 데이터 베이스를 관리하려면 SQL을 사용해야 한다. 자바로 작성한 애플리케이션은 JBDC API를 사용해서 SQL을 데이터베이스에 전달한다. 반복 그리고 반복 구체적인 예시로 SQL을 직접 다룰 때의 문제점을 알아보자 예시의 시나리오는 자바와 관계형 데이터베이스를 사용해서 회원 관리 기능을 구현하는 것이다. 회원을 CRUD하는 기능 public class Member{ private Stirng memberId; private String name; ... } public class MemberDAO{ public Member find(String memberId){...} } 이제 M..
-
스프링 MVC 2 - 메시지, 국제화(소개, 스프링 메시지 소스 설정)FrameWork/Spring&Spring-boot 2023. 12. 7. 13:20
메시지, 국제화 소개 메시지 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? → 여러 화면에 보이는 상품명, 가격, 수량 등 `label`에 있는 단어를 변경하려면 다음 화면들을 다 찾아가서 모두 변경해야 한다. 지금 처럼 화면 수가 적으면 문제가 되지 않지만 화면이 수십개 이상이라면 수십개의 파일을 고쳐야 한다. `addForm.html`, `editForm.html`, `item.html`, `item.html` 왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라고 한다. 예를 들어서`messages.properteis`라는 메시지 관리용 파일을 만들고 item = 상품 item.id = ..