Entity Bean

2013. 8. 4. 15:14Java/Spring Framework

Entity Beans :  쉽게 말해 DB에 가져온 데이터들을 담는 그릇이라고 생각하면 쉽다.

-       DB에 저장된 데이터를 객체로 표현하기 위한 EJB Component

-       Entity Bean의 내용은 DB의 내용과 일치

-       Entity Bean 하나의 객체는 DB 테이블의 하나의 row mapping .

-       DB의 하나의 행(recode, row, entity)은 여러 개의 열(column, attribute)을 가지고 있는데, 각각의 attribute Bean 객체의 멤버필드에 값이 저장됨.

보다 정확한 개념을 위해서 검색을 해봤다.

* Entity Bean 
 -
DB에 있는 row(column이 아니다.) 정보를 EntityBean 하나에 담는다.

*
Persistence - 지속성 
 - Entity Bean
의 내용을 수정하면, 자동으로 DB에 있는 값이 저절로 바뀐다.

*
EJB
컨테이너가 DB를 연결하는 코드를 자동으로 만들어준다!!!


* Persistence
를 유지하는 방법
1. CMP(
컨테이너가 관리
)
 - Contatiner Magaged persistence
 -
컨테이너가 코드를 관리한다
.

2. BMP(
빈이 관리 : 개발자가 관리한다
)
 - Bean Managed Persistence
 -
개발자가 코드를 다 작성한다.


* EJB(Enterprise Java Bean) 3가지

 

 - Session Bean, Entity Bean, Message Driven Bean
 -
Session Bean 은 주로 로직을 담당하고, Entity Bean은 데이터(지속성을 갖는 데이터-persistant)을 담당한다.
   
데이터 중에서 지속성에 관련된 데이터를 처리할때, DB에 입력하고 저장하고 하는 등의 로직이 필요하다 이런 작업을 할 떄
    한줄을 하나의 빈과 매칭(OR-mapping)시켜 빈을 새로 만들면 DB에 한줄이 추가되고, 빈을 제거하면 한줄이 제거되고,
   
한 개의 빈을 찾을면 PK를 이용해서 한 줄을 찾고, 한 개의 빈의 내용을 변경하면 한 줄의 컬럼을 새로 업데이트 하고.
   
이런식으로 하도록 하면 매우 편리할것이다

    
Entity beans은 지속성 관련 작업을 하는데 빈의 삶과 죽음이 바로 DB row와 매칭되도록하는 것이다.
    Session Bean
에서 SQL 쿼리를 날리며 CRUD 작업을 할수 있다
.
   
이것도 Persistant 와 관련된 작업이라 볼수 있으나, Entity beansPresistant 자체라고 보면 더 이해하기 쉽다
    
Entity bean을 만들고 찾고 업데이트 하고 제거하면 WAS DB SQL 쿼리를 신뢰성있게 날려준다
    
엔티티 빈을 만들고 찾고 업데이트 하고 제거하면 WAS DBdp SQL 쿼리를 신뢰성있게 날려준다
.
    
Entity bean은 내가 쿼리를 직접 DB에 날리는 것이 아니라 DB(Persistant)에 매핑된 빈을 이용하여
    간접적으로 CRUD 작업을 한다.

 

 

 

 * ORM(Object - Relational mapping)
  - DB
와 자바과 1:1 매핑 시키는 것.
  -
하나의 row 정보가 하나의 인스턴스가 된다
.
  -
 EntityBean도 위와 같은 방법.
   cf.) Oracle TopLink, Hibernate, JDO
등도 자동화 ORM을 해준다.
  -
클라이언트의 app와는 다른 별도의 lifetime를 갖는다는 것이 sessionBean과의 차이점이다.

 * Entity Bean이 다른 EJB컴퍼넌트와 다른점
  
  1. entity bean class
    - DB
의 스키마정의를 그대로 매핑
    - row
정보하나가 entity bean 하나가 된다.
    -
표준 callback 메소드를 포함
.

  
2. primary key class
    - primary key
를 통해 entity bean을 구별하도록 한다
.
    -
반드시 serializerble 해야한다!!!!!

 - 몇개의 entitybean 객체가 동일한 데이터를 표현 할 수도 있고, 이때 동기화 (synchronized)에 신경써야한다.
 - entityBean
은 풀에서 넣고 빼면서 쓸수있고 ,
primarykey를 이용해서 찾을 수 있다.

컨테이너를 통해 호출 ejbLoad(), ejbStore()EJB의 모든 빈인스턴스를 single-threaed로 처리되도록 하였다.
많은 클라이언트가 동시에 하나의 데이터에 집중될경우를 고려하여
Entity Bean 클래스의 create() void 가 아니고, primary key class 를 리턴한다. 생성된 데이터의 primary key 를 돌려준다.

 

* entity bean 의 생성
* entity bean
의 삭제.
 - ejb
객체와 home 객체에 동시에 존재하는  remove()를 반드시 호출해야한다
.
 -
빈인스턴스가 삭제된다는건, DB내용이 없어진다는 것이다
.
 -
하지만 빈인스턴스는 재사용된다. 풀로 다시 쏙
,,

* entity bean
의 검색

 - DB
에서 select 를 하는것과 마찬가지라고 할 수 있다.

* Entity Context
- EJB Container
의 세팅에 관한 정보를 가지고있다
.
-
이 객체를 통해 트랜잭션이나 보안정보를 검색 할 수 있다
.
-
이 컨택스트안에 getPrimaryKey()가 있다
.
-
엔티티 빈이 재사용 가능하므로 pool을 통해 관리되어질 수 있다
.
- getPrimaryKey()
를 통해 어떤 엔티티 빈과 관련 있는지 검색한다
.

* finder
메소드는 collection 으로 리턴가능

 -
찾고자 하는 rows 가 많을 땐 primary key collection 에 담아서 보낼 수도 있다
.
 - finder
메소드는 적어도 한개는 있어야한다
.
 - ejbFind
로 시작해야한다
.
 -
다양한 finder() 가 존재할 수 있다.