Hibernate 데이터베이스 연결 설정 및 프로필 작성

5746 단어 Hibernate
Hibernate 데이터베이스 연결 설정 및 프로필 작성
우선 Hibernate 의 설정 은 두 가지 상황 이 있 습 니 다. 1. 환경 설정 을 관리 합 니 다.2. 비관 리 환경 에서 의 설정.우 리 는 관리 환경 이 그것 에 자동 적 인 사무, 자원 관리 와 밑바닥 의 안전 구 조 를 제공 한 것 을 이해 할 수 있다.예 를 들 어 JBoss, BEA WebLogin 이나 IBM Websphere 는 모두 표준 적 인 관리 환경 을 실현 했다.관리 환경 이 아니 라 자동 적 인 사무, 자원 관리 와 저층 의 안전 구 조 를 제공 하지 않 았 다.예 를 들 어 Jetty 나 Tomcat 같은 servlet 용기.
그 다음 에 구체 적 인 데이터베이스 연결 을 살 펴 보 겠 습 니 다.
비 관리 환경 에서 우리 의 hibenate 는 JDBC 연결 을 받 아야 합 니 다. 만약 에 우리 가 모든 데이터 뱅 크 의 상호작용 을 위해 연결 을 만 들 면 자원 을 낭비 하기 때문에 우 리 는 데이터 뱅 크 연결 풀 을 사용 해 야 합 니 다.관리 환경 이 아 닌 연결 풀 을 실현 하지 못 했 습 니 다. 우 리 는 자신의 풀 화 알고리즘 을 실현 하거나 제3자 라 이브 러 리, 예 를 들 어 C3P 0 에 의존 해 야 합 니 다. Hibernate 에 C3P 0 에 대한 지원 이 내장 되 어 있 기 때문에 이 연결 풀 을 사용 합 니 다.Hibernate 를 사용 하지 않 을 때 코드 는 보통 연결 풀 을 직접 호출 하여 JDBC 연결 을 얻 고 SQL 문 구 를 실행 합 니 다.
관리 환경 에서 예 를 들 어 J2EE 응용 서버 는 전형 적 인 관리 환경 이다.응용 서버 는 일반적으로 EJB 를 지원 하기 위해 설계 되 었 지만 EJB 실체 Bean 을 사용 하지 않 더 라 도 다른 서 비 스 를 이용 할 수 있 습 니 다.Hibernate 는 세 션 이나 메시지 구동 EJB 와 함께 자주 사용 되 며, EJB 는 같은 Hibernate API: Session (세 션), Transaction (사무), Query (조회) 를 호출 합 니 다.Hibernate 와 관련 된 코드 는 비관 리 와 관리 환경 사이 에서 완전히 이 식 될 수 있 으 며 Hibernate 는 서로 다른 연결 과 사무 전략 을 투명 하 게 처리 했다.응용 서버 는 연결 탱크 를 JNDI 바 인 딩 데이터 원본 으로 대외 적 으로 표시 합 니 다.이것 은 javax. jdbc. Datasource 류 의 인 스 턴 스 입 니 다.하 이 버 네 이 트 에 게 JNDI 데이터 원본 을 찾 으 려 면 JNDI 의 전체 한정 명 을 제공 해 야 합 니 다.
예 를 들 면:
hibernate.connection.datasource = java:/comp/env/jdbc/AuctionDB
hibernate.transaction.factory_class = \
net.sf.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class = \
net.sf.hibernate.transaction.JBossTransactionManagerLookup
hibernate.dialect = net.sf.hibernate.dialect.PostgreSQLDialect

그러나 우 리 는 '히 버 네 이 트 인 액 션' 에서 인용 한 것 을 알 아야 한다.
인용 하 다.
자바 에는 J2EE 관리 환경 에서 업 무 를 제어 하 는 표준 사무 API: JTA 가 있 었 다.이것 은 용기 관리의 사무 (CMT) 라 고 불 린 다.JTA 트 랜 잭 션 관리자 가 존재 한다 면 JDBC 연결 은 지원 되 고 완전히 제어 할 수 있 습 니 다.이 는 비관 리 환경 과 달리 비관 리 환경 에서 JDBC 연결 과 JDBC 사 무 를 직접 관리 하 는 응용 (또는 연결 풀) 이다.
Hibernate 는 이 두 환경 사이 에서 이식 성 을 확보 해 야 하기 때문에 사 무 를 제어 하 는 API 를 정의 합 니 다.Hibernate 의 트 랜 잭 션 인 터 페 이 스 는 하층부 의 JTA 나 JDBC 트 랜 잭 션 (또는 잠재 적 인 CORBA 트 랜 잭 션) 이라는 하층부 트 랜 잭 션 전략 이 속성 을 사용 할 수 있 도록 추상 화 되 어 있 습 니 다.
hibernate. connection.factory_class 에서 설정 합 니 다. 다음 두 값 중 하 나 를 가 져 올 수 있 습 니 다.
인용 하 다.
■ net. sf. hibenate. transaction. JDBCtransactionFactory 는 직접적인 JDBC 업 무 를 대표 합 니 다.
이 정책 은 비 관리 환경 에서 의 연결 풀 과 함께 사용 해 야 하 며, 지정 한 정책 이 없 을 때 부족 합 니 다.
값 1
■ net. sf. hibenate. transaction. JTA TransactionFactory 는 JTA 를 대표 합 니 다.CMT 에 대해 서 는 이게 바로...
정확 한 정책 입 니 다. 이 때 연결 은 JTA 가 지원 합 니 다.beginTransaction () 을 호출 할 때 JTA 업무 가 실행 되 고 있 으 면 다음 작업 은 그 업무 의 컨 텍스트 에서 발생 합 니 다 (그렇지 않 으 면 새로운 JTA 사 무 를 시작 합 니 다).
따라서 J2EE 서버 를 사용 할 때 필요 한 두 가지 절 차 를 기억 해 야 합 니 다. 앞에서 설명 한 것 처럼 Hibernate 입 니 다.
사무 API 는 공장 클래스 를 설정 하여 JTA 를 지원 하고 응용 서버 의 특정한 사무 관리자 의 검색 정책 을 설명 합 니 다.
프로필
히 베 네 이 트 를 이용 해 개발 하면 히 베 네 이 트 의 설정 을 잘 알 아 보 는 데 도움 이 될 것 이다.다음은 자 료 를 찾 아 정리 한 것 입 니 다. 잘못 이 있 으 면 아낌없이 지적 해 주세요. 감사합니다.
다음은 JDBC 연결 설정 에서 가장 중요 한 설정 입 니 다.
1. hibernate.connection.driver_class: 데이터 베 이 스 를 연결 하 는 드라이버 를 설정 합 니 다.
2. hibenate. connection. url: 데이터베이스 서 비 스 를 연결 할 URL 설정
3. hibenate. connection. username: 데이터 베 이 스 를 연결 하 는 사용자 이름
4. hibenate. connection. password: 데이터 베 이 스 를 연결 하 는 비밀번호
5. hibernate.connection.pool_size: hibenate 데이터베이스 연결 탱크 의 최대 병렬 연결 수 를 설정 합 니 다.
6. hibenate. dialect: 데이터 베 이 스 를 연결 하 는 데 사용 할 사투 리 를 설정 합 니 다.
위 에 Hibernate 데이터베이스 연결 탱크 의 최대 연결 병발 수 를 설 정 했 지만 Hibernate 자체 연결 탱크 는 테스트 가치 만 있 습 니 다.실제 항목 에서 사용 하 는 것 을 추천 하지 않 습 니 다.실제 항목 에 서 는 c3p 0 연결 탱크 를 사용 할 수 있 습 니 다.그래서 hibenate. connection. poo 대신 c3p 0 연결 풀 설정 을 사용 합 니 다.size 면 됩 니 다.
c3p 0 설정 은 다음 과 같 습 니 다:
1. hibernate.c3p0.max_크기: c3p 0 연결 탱크 의 최대 연결 수
2. hibernate.c3p0.min_크기: c3p 0 연결 탱크 의 최소 연결 수
3. hibenate. c3p 0. timeout: c3p 0 연결 풀 연결 시간 초과, 단 위 는 초
4. hibernate.c3p0.max_statements: c3p 0 캐 시 Statement 수량
따라서 전체 프로필 내용 은 다음 과 같 습 니 다 (MySQL 데이터베이스 사용).
Xml 코드
<!DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--          -->
<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--            URLlocalhost      IP  onlinestore     -->
<propertyname="hibernate.connection.url">jdbc:mysql://localhost/onlinestore</property>
<!--           -->
<propertyname="hibernate.connection.username">root</property>
<!--          -->
<propertyname="hibernate.connection.password">root</property>
<!--    sql      -->
<propertyname="hibernate.show_sql">true</property>
<!--c3p0         -->
<propertyname="hibernate.c3p0.max_size">20</property>
<!--c3p0         -->
<propertyname="hibernate.c3p0.min_size">1</property>
<!--c3p0                      timeout,    -->
<propertyname="hibernate.c3p0.timeout">1800</property>
<!--c3p0  Statement    -->
<propertyname="hibernate.c3p0.max_statements">50</property>
<!--sql       MySQL-->
<propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
</session-factory>
</hibernate-configuration>

좋은 웹페이지 즐겨찾기