일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- db종류
- JPQL
- codeium
- gtihub
- java
- git branch 삭제
- analytics4
- git pat
- 도커이미지
- 애널리틱스4
- datagrip
- spring
- bigquery
- docker
- 11월순위
- JPA
- 데이터내보내기
- Python
- docker 명령어
- pat발급
- IntelliJ
- 티스토리챌린지
- DBMS
- ANTIFRAGILE
- 명령어
- ci/cd
- 오블완
- 컬렉션프레임워크
- 르세라핌
- Today
- Total
목록SPRING (66)
hanker
CGLIB (Code Generator Library)는 Java에서 동적으로 바이트코드를 생성하여 객체의 프록시를 만드는 라이브러리이다. 주로 Spring Framework에서 AOP(Aspect-Oriented Programming) 기능을 지원하기 위해 사용되고, final 클래스나 인터페이스가 아닌 클래스를 상속하여 동적으로 프록시를 생성한다. Spring 프로젝트에서 동작을 하다보면 종종 보이곤(logging level 이 Debug 로 설정하면) 하는데, Spring에서 AOP구현을 위해 자동으로 사용되기 때문에 우리가 따로 설정할 필요는 거의 없다. CGLIB의 작동 방식 1. 클래스 상속을 통한 프록시 생성 - CGLIB는 인터페이스가 아닌 구체 클래스를 상속하여 프록시를 생성한다. (여기..
이번 글에서는 IntelliJ 에서 Spring을 시작하는 방법에 대해서 적어본다. 우선 Spring을 셋팅하기 위해서 오늘 날짜 기준으로 java 17버전 이상이 필요한데, 스프링 버전을 낮춰서 java 8 로 셋팅하려한다. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes Spring Boot 3.0 Release NotesSpring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss. - spring-projects/spring-bootgithub.com위 ..
JPQL(Java Persistence Query Language) 개발된 이유JPA(Java Persistence API)가 2006년에 도입되면서 함께 등장했는데, 기존 SQL의 테이블 중심적인 쿼리 작성 방식에서 객체 중심적인 쿼리 작성을 가능하게 하기 위해 개발 JPQL이란?객체지향 쿼리 언어로, 엔티티 객체를 대상으로 쿼리를 작성하는 언어이며, SQL과 비슷한 문법을 가지고 있지만, 테이블이 아닌 엔티티 객체를 대상으로 쿼리를 작성한다. 작성한 JPQL을 JPA가 SQL로 변환해서 데이터베이스에서 실행 주요기능은.. - 엔티티 객체를 대상으로 하는 검색 기능private final EntityManager em;public void testJPQL(){ String jpqlA =..
EntityManager는 데이터베이스와 애플리케이션 사이에서 데이터를 관리하는 도구이다.즉, 프로그램에서 사용하는 객체(엔티티)를 데이터베이스에 저장하거나, 데이터베이스에서 불러오고, 수정하거나 삭제하는 일을 담당한다.생명주기 관리: 프로그램에서 객체가 생성되거나 사라질 때, 그 상태를 추적하고 적절한 시점에 데이터베이스에 저장하거나 삭제하는 일을 함.데이터베이스와 상호작용: 객체를 데이터베이스에 저장할 때, EntityManager가 그 중간에서 데이터를 저장, 수정, 삭제, 조회하는 작업을 대신 처리해줌.즉, 개발자가 일일이 SQL 문을 작성하지 않고, EntityManager가 알아서 데이터베이스와 소통하도록 도와주는 중간 관리자 역할을 하게 된다. 주요 기능영속성 컨텍스트* 관리: 엔티티의 상..
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly() 1. TransactionAspectSupport: Spring AOP의 트랜잭션 관리를 지원하는 클래스 2. currentTransactionStatus(): 현재 실행 중인 트랜잭션의 상태 정보를 가져온다. 3. setRollbackOnly(): 트랜잭션 상태를 롤백 전용으로 설정 동작은 1. 트랜잭션 상태 확인: 현재 실행 중인 트랜잭션의 상태를 가져온 후2. 롤백 표시: 해당 트랜잭션을 롤백해야 함을 Spring에 알림 3. 트랜잭션 종료 시 동작: 메서드가 종료될 때 Spring이 트랜잭션을 자동으로 롤백@Transactional 어노테이션은 런타임 예외처리(Runtime..
pom.xml com.oracle.database.jdbc ojdbc8 19.8.0.0 1. application.properties 일 경우# IP:PORT:SIDspring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl# IDspring.datasource.username=hanker# PWspring.datasource.password=hankerspring.datasource.driver-class-name=oracle.jdbc.OracleDriver# HikariCP 커넥션 풀 설정 (기본값)spring.datasource.hikari.maximum-pool-..
해당 오류 원인은 JPA 사용 시 트랜잭션 없이 엔티티를 영속화하려고 할 경우에 발생한다. 해결방법은 간단한데, EntityManager를 사용하는 클래스 상단에 @Transactional 어노테이션을 추가하던, persist를 사용하는 메서드에 @Transactional 어노테이션을 추가하면 된다. @Transactionalpublic class JpaMemberRepository implements MemberRepository { private final EntityManager em; public JpaMemberRepository(EntityManager em) { this.em = em; } @Override // @Transactional publ..
개발을 하다가 보면 400 Error 가 종종 등장하는데, 해당 발생 원인을 살펴보자 @RequestBody와 데이터 형식 문제: API에서 @RequestBody 어노테이션을 사용하여 파라미터를 받을 경우 JSON 형식으로 데이터를 받아야 하는데, 클라이언트에서 JSON형식으로 보내지 않았을 경우필수 파라미터 누락: @RequestParam 어노테이션을 사용해서 파라미터를 받을 경우에 클라이언트에서 지정된 파라미터값을 보내지 않았을 경우유효성 검사 실패: @Entity 클래스에서 @Valid, @NotNull, @Size 등의 어노테이션을 사용하여 유효성 검사를 하는 도중 유효하지 않은 데이터가 들어왔을 경우Content-Type 헤더 문제: 클라이언트에서 JSON 데이터를 보내는데, Content-..
Excel 파일을 csv파일로 변환하는 방법은 여러가지가 있다.Excel 자체에서 다른 이름으로 저장 누르고 CSV 파일로 저장하면 저장되지만, 우리는 코드에서 자동으로 변환시켜줘야 한다.이 외에도 여러가지 방법중에 JAVA 코드로 변환하는 방법을 알아보자 public String excelToCsv() { String excelFilePath = "/data/2021.xlsx"; // 변환할 Excel 파일 경로 String csvFilePath = "/data/2021.csv"; // 결과로 저장할 CSV 파일 경로 return convertXlsxToCsv(excelFilePath, csvFilePath);}2021.xlsx 파일이 있는곳을 적어주고, csv로 저장될 경로를 ..
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project "" Fatal error compiling: java.lang.NoSuchFieldError: Class cohttp://m.sun.tools.javac.tree.JCTree$JCImport does not have member field 'cohttp://m.sun.tools.javac.tree.JCTree qualid' -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the ..