Java 관련: 133개의 글
프로젝트 구조 DB는 편의상 H2 DB 사용 구현체는 Hibernate 사용 Spring 자체 설정보다는 JPA 설정 예제를 위해 Spring Boot 사용 Maven 기반 프로젝트 JPA란 무엇인가? 에 나오는 user, order 테이블을 예제로 사용 JPAConfig.java LocalContainerEntityManagerFactoryBean : EntityManagerFactoryBean을 Spring에서 사용하기 위한 클래스 JpaVendorAdapter : JPA는 여러 구현체가 존재하기 때문에 구현체별 설정을 지원하기 위한 클래스이다. 나는 hibernate를 사용하기 때문에 HibernateJpaVendorAdapter를 사용한다. @Configuration @EnableTransacti..
프로젝트 구조 DB는 편의상 h2 DB 사용 구현체는 Hibernate 사용 JPA란 무엇인가? 에 나오는 user, order 테이블을 예제로 사용 META-INF/persistence.xml hibernate.connection.driver_class : DB Driver hibernate.connection.url : DB url 및 DB파일이 저장될 경로(h2 DB에 한함) hibernate.connection.user : username hibernate.show_sql : JPA 내부적으로 사용되는 쿼리를 log로 나타낼지 설정 hibernate.hbm2ddl.auto : Entity에 의한 테이블 설정 (create-drop은 프로젝트 실행시 기존 테이블을 삭제하고 다시 생성한다. 즉 테스트..
JPA(Java Persistent API) JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을 JPA라고 바꾸고 JavaSE, JavaEE를 위한 영속성(persistence) 관리와 ORM을 위한 표준 기술이다. JPA는 ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink Essentials과 같은 구현체가 있고 이에 표준 인터페이스가 바로 JPA이다. ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다. RDB 테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기 쉽지 않다. 때문에 ORM을..
Invalid bound statement (not found): 에러가 발생하는 이유가 몇 가지 있는데 아무리 찾아봐도 내 문제는 해결되지 않았다.에러 원인은 아래와 같다.Mapper Interface와 mapping되는 xml파일에 오타가 있는 경우 : 예를 들면 id와 Interface에 메소드명이 일치하지 않는 경우classpath에 경로가 잘못된 경우xml이 저장될 경로는 잘못 생성한 경우대부분 1번과 같은 에러가 발생하는데 이는 오타만 찾으면 금방 해결이 가능하다. 근데 3번과 같은 경우(내가 겪은 에러)는 쉽게 인지 하지 못하는 경우가 많다. 주의해서 생성할 필요가 있다.어떤 경우였냐면 나는 Intellij를 사용하는데 예를 들어Inteface package 경로 : net.woniper.s..
mybatis를 사용해 개발 하다가 insert한 데이터에 대한 key를 얻어야하는 경우가 생겼다. 고민 해봤지만 insert 후 다시 select를 해서 key를 얻어 와야겠다고 생각했다.하지만 이 방법은 몇가지 문제가 있다고 생각이 들었다.- key값 하나를 얻기 위해 쿼리를 2번 수행해야 하는 문제.- unique한 값을 알지 못했을 경우 정확한 key를 얻기 힘들다.(조건절 사용) 1. 흐름1) insert를 하기 위해 mapper에 parameter로 dto객체를 넘긴다.2) dto객체를 받은 mapper는 insert 쿼리를 수행한다.3) insert쿼리 완료 후 parameter로 받은 dto객체에 key값을 set(입력)한다.4) dto객체에서 key값을 사용한다.2. dto?1234567..
HTTP 헤더 1. HTTP 헤더 아래 헤더 정보는 텍스트만 있는 HTML 문서에 대한 요청/응답 헤더임.HTTP Version 1.1을 기준으로 작성된 헤더 정보임.(클라이언트 환경은 Windows XP, NET Framework 1.1, IE 6.0) 2. 요청 헤더 (1) GET /test/test.htm HTTP /1.1요청 Method와 요청 파일 정보, HTTP 버전을 뜻함.HTTP 프로토콜은 클라이언트가 서버에게 요청하는 방식에 대한 몇 가지 동작을 정의하고 있음.즉, 요청 Method 란 클라이언트가 서버로의 요청하는 방법을 명시함. 1) GET지정된 리소스(URI)를 요청함. 2) POST서버가 클라이언트의 폼 입력 필드 데이터의 수락을 요청함.클라이언트는 서버로 HTTP Body에 Da..
커넥션 풀(Connection Pool) 1. 커넥션 풀(DBCP)데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool) 속에 저장해 두고 있다가 필요할 때 커넥션을 풀에서 쓰고 다시 풀에 반환하는 기법을 말한다.웹 프로그램에서는 데이터베이스의 환경설정과 연결 관리 등을 따로 XML파일이나 속성 파일을 사용해서 관리하고, 이렇게 설정된 정보를 이름을 사용하여 획득하는 방법을 사용한다.- 웹 컨테이너가 실행되면서 커넥션(connection) 객체를 미리 풀(pool)에 생성해 둡니다.- DB와 연결된 커넥션(connection)을 미리 생성해서 풀(pool) 속에 저장해 두고 있다가 필요할 때에 가져다 쓰고 반환한다.- 미리 생성해두기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리 할 수 ..
서블릿 이벤트 서블릿은 다양한 시점에 발생되는 이벤트와 이벤트를 처리하기 위한 인터페이스를 정의하고 있다. 이들 이벤트와 인터페이스를 이용하면 웹 어플리케이션에서 필요로 하는 데이터의 초기화나 요청 처리 등을 추적할 수 있게 된다. 서블릿 규약은 다양한 이벤트를 처리할 수 있는 인터페이스를 정의하고 있는데, 이 장에서는 그 중에서 ServletContextListener이다. 데이터 저장 영역(application, session, request)에 데이터가 들어가고 나가는 혹은 그 객체가 생성되고 소멸되는 일련의 작업들에 대해 컨트롤한다. 1. 이벤트가 사용되는 경우1) 컨텍스트가 초기화되는 경우2) 세션이 생기거나 소멸되는 경우3) 속성이 바뀌는 경우--> 이런 이벤트에 대해서 미리 web.xml 파..
서블릿 필터 서블릿은 웹에서 실행되는 프로그램이기 때문에 네트워크 통신의 사이 사이에서 특별한 동작을 만들어 낼 수 있다.예를 들면, 홈페이지에 접속하기 직전에 이벤트 창을 띄운다든지 아니면 데이터를 입력한 후 실제 저장하는 페이지로 넘어가지 전에 넘겨지는 데이터들에 대하여 한글 처리를 한다든지 등의 작업을 할 수 있다.또한, 세션이 만들어지거나 삭제될 때 이것을 감지하는 작업도 할 수 있다.이렇게 여러가지 동작에 있어서 사이 사이에 끼워져서 실행되는 서블릿의 클래스를 필터라 부르고 동작이 발생할 때 감지하는 것을 이벤트라 부른다. 1. 서블릿 필터 필터는 말 그대로 여과 기능을 수행한다. 웹 프로그램에서도 하나의 페이지에서 다른 페이지로 전달되는 데이터가 필터를 지나 가공되거나 걸러지게 된다.일반적으로..
서블릿 기초 -HttpServlet을 상속받는 클래스는 doGet() 메소드를 오버라이딩할 수 있기 때문에 이 클래스는 서블릿으로 동작할 수 있게된다. 1. 서블릿 기본1 서블릿 규약에 따라 자바 코드를 작성한다.2 자바 코드를 컴파일해서 클래스 파일을 생성한다.3 클래스 파일을 /WEB-INF/classes 디렉토리에 패키지에 알맞게 위치시킨다.4 web.xml 파일에 서블릿 클래스를 설정한다.(필요한 경우 진행)5 톰캣 등의 컨테이러를 재실행한다.(서블릿 리로딩 기능이 있는 경우 생략)6 웹 브라우저에서 확인한다. MVC 패턴을 지원하는 서블릿 코드를 직접 구현하지 않더라도 서블릿 자체에 대해서 이해하는 것은 웹 개발을 하는데 있어서 중요한 부분이다.HttpServlet 클래스는 서블릿 규약에 포함된..