FrameWorks70 Spring Boot(Maven)에 Mybatis + postgreSQL 접목시키기!! 안녕하세요. 이번 게시글은 데이터 관리를 위해 Spring Boot에 Mybatis와 PostgreSQL을 접목 시키는 방법을 설명하겠습니다. 우선 환경은 다음과 같습니다. 구분 언어 / 라이브러리 언어 Java17 프레임워크 Spring Boot 3.2.1 Persistence Framework Mybatis 3.0.3 자동화 빌드 툴 Maven 보통 Spring Boot의 데이터 흐름은 아래와 같습니다. Spring Boot와 Spring의 용어 차이는 아래와 같으니 참고하시기 바랍니다. (자주보는 그림이 될수도 있습니다. 중요한 부분이기에 다른글에서도 자주 등장할 예정입니다.) 설정 파일 구성 pom.xml 우선 pom.xml에 우리가 필요로하는 dependency를 추가해 주어야 합니다. org... FrameWorks/Spring & Boot 2024. 1. 13. URL의 특정 패턴을 파악하고 가로채는 HandlerInterceptor, HandlerInterceptorAdapter HandlerInterceptor, HandlerInterceptorAdapter 애노테이션의 선언 없이 사용 하는 Spring에서의 Class(HandlerInterceptorAdapter) 와 Interface(HandlerInterceptor) 이다. 당연스럽게도 Class이므로 상속받아 사용하고, Interface이므로 구현해 사용해야 한다. 차이점 이라면 PreHandle, PostHandle, afterCompletion 세가지 메서드를 모두 구현해 주여야하는 Interface와 선택해서 Override할 수 있는 Class의 차이라고 할 수 있다. preHandle preHandle은 Controller가 실행 되기 이전에 url을 식별 or 매순간에 중간에 캐치하여 작성한 로직을 우선적으로.. FrameWorks/Spring & Boot 2024. 1. 13. JPA Entity 단위 기본 CRUD처리 기본 CRUD Method find(${param1}, ${param2}) SELECT를 할 때 사용하는 Method 첫번째 parameter로 조회할 Entity의 Class정보를 .class로 받아온다. 두번째 parameter로 조건 PK에 값을 넣어준다. persist(${param}) INSERT를 할 때 사용하는 Method param에는 Insert를 할 Entity 객체를 명시한다. remove(${param}) 우선 조회(find)를 하여 영속 컨텍스트에 데이터를 담아둔다. param에는 DELETE를 할 객체를 넣어주는데 이때 find()로 찾은 객체를 넣어준다. commit과 remove사이에 다른 프로세스가 데이터를 삭제해도 예외가 발생하기에 큰 문제는 없다. FrameWorks/JPA 2023. 8. 26. JPA 기본 구조 & 영속성 컨텍스트 기본 구조 EntityManagerFactory 초기화 DB작업이 필요할 때마다 EntityManager 생성 EntityManager로 DB조작 EntityTransaction으로 트랜잭션 관리 BUT!!! 스프링과 연동시에는 대부분 스프링이 대신 처리하므로 매핑 설정 중심으로 작업을 권장! Entity기본 객체 EntityManagerFactory Persistance 객체를 이용하여 _createEntityManagerFactory_메서드로 사용할 DB를 생성한다. 해당 객체로 EntityManager 객체를 생성해준다. EntityManagerFactory emf = Persistance.createEntityManagerFactory("jspbegin"); EntityManager EntityM.. FrameWorks/JPA 2023. 8. 24. JPA 세팅 및 기초 세팅 및 기초 pom.xml org.hibernate hibernate-core ${hibernate.version} org.hibernate hibernate-hikaricp ${hibernate.version} mysql mysql-connector-java 8.0.27 ch.qos.logback logback-classic 1.2.6 persistance.xml 해당 파일은 main/resources/META-INF에 생성해준다. study.jpa.jpa01.User true 기본기 사용 User.java @Entity //DB 테이블과 맵핑 대상 @Table(name = "user") //user 테이블과 맵핑 public class User { @Id //식별자에 대응(변수명과 칼럼의 이름이 같.. FrameWorks/JPA 2023. 8. 24. reactive( ) Vue reactive functionconst targetMap = new WeakMap() // targetMap stores the effects that each object should re-run when it's updated let activeEffect = null // The active effect running function track(target, key) { if (activeEffect) { // { // run them all effect() }) } } function reactive(target) { const handler = { get(target, key, receiver) { let result = Reflect.get(target, key, receiver) t.. FrameWorks/Vue 2023. 7. 11. 3. Stateful Widgets State Stateful WidgetStateless Widget ← 데이터 없이 단순히 UI만 만듬위젯에 데이터를 저장하고 싶을 때 사용실시간으로 데이터의 변화를 보고 싶을 때 사용StatelessWidget을 StatefulWidget으로 변경할 수 있음 Stateful Widget의 종류데이터가 없는 위젯데이터가 있는 위젯데이터에 따라 UI가 변경될 수도 있음 import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override State createState() => _MyAppState(); }.. FrameWorks/Flutter 2023. 4. 24. [SpringBoot] RequestContextHolder RequestContextHolder는 Spring 컨텍스트에서 HttpServletRequest에 직접 접근 할 수 있도록 도와주는 역할을 한다. 활용 시 HttpServletRequest를 사용하기 위해 이를 메소드 파라미터로 연이어 넘겨받을 필요가 없다. 동작원리ThreadLocal을 사용하여 servlet이 호출되면 key, value(thread, HttpServletRequest)를 보관호출된 servlet과 동일한 thred내에서는 어느 곳에서든 같은 HttpServletRequest를 꺼낼 수 있음servlet이 종료될 때 해당 thread를 key로 갖는 쌍을 제거 HttpServletRequest를 사용하는 경우Parameter로 데이터를 받아 주어야 함@RestController @R.. FrameWorks/Spring & Boot 2023. 4. 13. [ThymeLeaf] fragment를 이용한 insert와 replace 사용 및 활용 Header main.htmlinsert와 replace의 사용 방법은 동일하다.th:insert=”~{해당 파일 경로 :: fragment이름}”해당 태그 안에 fragment를 삽입하는 방법th:replace=”~{해당 파일 경로 :: fragment이름}”해당 태그를 fragment로 대체하는 방법 Main Page 데이터를 넘겨받아 템플릿에서 사용 할 수도 있다.User.javapublic class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int.. FrameWorks/ThymeLeaf 2023. 4. 13. 2. UI Challenge 우선 모든 위젯의 생성은 객체 형태로 선언 되지만 Dart언어의 특성상 new라는 예약어의 생략이 가능하여 그렇게 보이지 않을 뿐 착각하면 안된다. 예를들면 아래 코드에서 MaterialApp()이라고 자성되어 있지만,new를 생략하여 안보일뿐 객체를 return하는 것마찬가지로 MaterialApp()안에 home이라는 매개변수에 Scaffold()라는 객체를 new라는 예약어 사용 없이 객체를 생성하고 대입하는 방법return MaterialApp( home : Scaffold( ... ) ) 해당 과정이 중요하고 간과하면 안된다. 대부분의 매개변수는 Null이 허용되며, 디폴트값이 정해져 있다.VScode의 경우 호버로 객체의 생성자의 매개변수를 볼 수 있고,IntelliJ에서는 Command+K와.. FrameWorks/Flutter 2023. 4. 10. 1. Hello Flutter 1-1) Hello World Widget마치 레고 블럭 같은 느낌위젯들을 모두 모아 하나의 웹 페이지를 만듬위젯을 만든다는건 class를 만든다는 것과 비슷 runApp([App()])App이라는 class를 만들어 실행App은 StatelessWidget를 상속받아 build메소드를 구현구현한 build메소드를 CupertinoApp(IOS)와 MaterialApp(Android) 중 return 할 것을 선택커스터마이즈를 하고 싶어도 기본 UI설정과 재료를 선택해 주어야 하기 때문에 선택해야함 scaffold상단 버튼, 중앙 정렬, bottom, tab, bar 등을 해줌 Uploaded by N2T FrameWorks/Flutter 2023. 4. 10. Flutter?? 다른 FrameWork와의 차이점 마치 게임 엔진 처럼 동작함IOS, Android, MacOS, WindowOS와 직접으로 대화하지 않음(크로스 플랫폼이 아님)운영체제는 엔진을 돌리기위해서만 사용함엔진(JVM이라고 생각하면 이해가 쉬움)을 사용해 대화함(C/C++)엔진이 화면을 뿌려줌input, button 등내장된 플랫폼 위젯을 사용하지 않음유저가 앱을 실행시키면 앱은 Flutter 라이브러리를 불러오고 개발자가 만든 모든 UI를 랜더링함모든 UI는 렌더링 엔진에 의해 그려짐배터리표시, 시간, 와이파이 등 네이티브 위젯이 아닌 Flutter가 그린 위젯이므로 똑같지 않음 React Native vs Flutter 최대한 해당 플랫폼(IOS, Android, Mac, Windows …)과 비슷하게 만들.. FrameWorks/Flutter 2023. 4. 10. 이전 1 2 3 4 5 6 다음 💲 추천 글 728x90 반응형