티스토리 뷰

Database

[Hibernate] Session 이란?

Nickolodeon 2022. 11. 26. 03:40

Session 은 데이터베이스와 물리적인 연결을 하기 위해 사용된다.
Session 객체는 가벼우며, 데이터베이스와 상호작용이 필요할 때마다 시작되도록 디자인되어 있다.
영속성을 가진 객체들은 세션 객체를 통해서 저장되고 조회된다.
세션 객체들은 너무 오래동안 열려 있으면 안된다. 그 이유는 보통 얘네는 스레드 안전 이 아니기 때문이다. 즉, 한 번 열리면 한 군데에서만 사용할 수 있다. 빠르게 쓰고 놓아주어야 다른 애들도 쓸 수 있다.

 

스레드 안전이란 ? 

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_%EC%95%88%EC%A0%84

세션의 주요 기능은 매핑된 엔티티 클래스들의 객체들에 대한 동작들을 제공하고, 생성하고, 읽고, 삭제하는 기능이다.

엔티티 클래스의 인스턴스들의 상태는 세 가지로 나눌 수 있다.
1. transient: 엔티티 클래스로만 존재하는 상태, 아직 데이터베이스에 등록 전이다.
2. persistent: 데이터베이스에 등록되어 영속성을 가진 객체가 된 상태
3. detached: 영속성을 가진 객체에서 세션을 닫은 후 엔티티의 상태

 

Session session = factory.openSession();
Transaction tx = null;

try {
   tx = session.beginTransaction();
   // do some work
   ...
   tx.commit();
} catch (Exception e) {
   if (tx!=null) tx.rollback();
   e.printStackTrace(); 
} finally {
   session.close();
}


이러한 코드 구성으로 세션이 열린다. 예외 발생 시, rollback() 으로 트랜잭션이 시작하기 전으로 돌아간 후에 세션이 생성되지 않고 삭제된다. 

출처

 

스레드 안전 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어

ko.wikipedia.org

https://www.tutorialspoint.com/hibernate/hibernate_sessions.htm

 

Hibernate - Sessions

Hibernate - Sessions A Session is used to get a physical connection with a database. The Session object is lightweight and designed to be instantiated each time an interaction is needed with the database. Persistent objects are saved and retrieved through

www.tutorialspoint.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함