Intro To Hibernate

83
Introduction to Hibernate

description

Introduction to Hibernate 3

Transcript of Intro To Hibernate

Page 1: Intro To Hibernate

Introduction to Hibernate

Page 2: Intro To Hibernate

Agenda Introduction to Hibernate Hibernate Architecture Persistence Lifecycle Object Identity Mapping tables to beans Mapping properties to columns Relationships Setting up a one to many relationships Setting up a many to many relationships Hibernate Transaction API Basic Queries Working with Queries Named Queries working with the query API Working with binding parameters

Page 3: Intro To Hibernate

Plain JDBC

Simple example to insert a row into database table, using JDBC

public void insertRow(Employee emp) {

String insertSQL = “INSERT INTO emp values(….);

Connection conn = getConnectionFromPool();

Statement stmt = conn.createStatement(insertSQL);

stmt.execute();

}

Page 4: Intro To Hibernate

Hibernate

Persistence for JavaBean/POJO Support for fine-grained, richly typed object

models Powerful queries Support for detached persistence objects Mapping meta data in XML file

Page 5: Intro To Hibernate

Hibernate Configuration

The hibernate.properties file Used for hibernate configuration Contains

- Database configuration- Datasource configuration- Transaction configuration- Caching configuration- Connection pool configuration- Other settings

Page 6: Intro To Hibernate

Hibernate Configuration... Contd

The hibernate.cfg.xml Alternative approach of configuration Can be used as replacement of

hibernate.properties Picked up from classpath Has got precedence on hibernate.properties file

Page 7: Intro To Hibernate

Hibernate Configuration... Contd Non managed environment

<hibernate-configuration><session-factory>

<property name="hibernate.connection.driver_class"> COM.ibm.db2.jdbc.app.DB2Driver</property><property name="hibernate.connection.url">jdbc:db2:SAMPLE</property><property name="hibernate.connection.username">db2admin</property><property name="hibernate.connection.password">db2admin</property><property name="hibernate.connection.pool_size">10</property><property name="show_sql">true</property><property name="dialect">net.sf.hibernate.dialect.DB2Dialect</property><!-- Mapping files --><mapping resource="test_emp.hbm.xml"/>

</session-factory></hibernate-configuration>

Page 8: Intro To Hibernate

Hibernate Configuration... Contd Managed environment (App Server)

<hibernate-configuration><session-factory>

<property name="hibernate.connection.datasource">java:comp/env/jdbc/my_ds1

</property><property name="hibernate.transaction.factory_class">

org.hibernate.transaction.CMTTransactionFactory</property><property name="hibernate.transaction.manager_lookup_class">

org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>

<property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.DB2Dialect</property>

<mapping resource="emp.hbm.xml"/> <mapping resource="dept.hbm.xml"/>

</session-factory></hibernate-configuration>

Page 9: Intro To Hibernate

Hibernate Mapping The hibernate-mapping xml file

<hibernate-mapping> <class name="com.entity.Emp" table="EMP"> <id name="empId" column="EMP_ID" > <generator class="native"></generator> </id> <property name="empName" column="EMP_NAME"></property> <property name="city" column="CITY"></property> <property name="deptId" column="DEPT_ID"></property> <property name="joinDate" column="JOIN_DATE"></property> <property name=“gender" column=“GENDER"></property> </class></hibernate-mapping>

Page 10: Intro To Hibernate

Simple standalone hibernate appliation

Requirements Hibernate libraries Hibernate configuration file A POJO class A hibernate-mapping file A Main class

Page 11: Intro To Hibernate

Sample POJO public class Emp implements SplEntity { private Integer empId; private String empName; private String city; private int deptId; private Date joinDate; private char gender;

public String getCity() { return city; } public void setCity(String city) { this.city = city; }

public int getDeptId() { return deptId; } public void setDeptId(int deptId) { this.deptId = deptId; }

public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; }

public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; }

public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; }

public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } }

Page 12: Intro To Hibernate

Sample Main classPublic class Main {

public static void main(String[] args) { try { SessionFactory factory = null; factory = new Configuration().configure().buildSessionFactory();

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

Emp e1 = new Emp();e1.setEmpName(“Rajesh B");e1.setCity(“Pune");e1.setDeptId(3);e1.setJoinDate(new Date("20-Jul-1995"));

session.save(e1);tx.commit();

} catch (Exception e) {e.printStackTrace();

}}

}

Page 13: Intro To Hibernate

Hibernate Architecture

Page 14: Intro To Hibernate

High Level View

Page 15: Intro To Hibernate

Understanding the Architecture

Page 16: Intro To Hibernate

Hibernate core interfaces

Session SessionFactory Configuration Transaction Query Criteria Types

Page 17: Intro To Hibernate

Session Interface

Page 18: Intro To Hibernate

SessionFactory Interface

Page 19: Intro To Hibernate

Configuration Interface

Page 20: Intro To Hibernate

Transaction Interface

Page 21: Intro To Hibernate

Query and Criteria Interfaces

Page 22: Intro To Hibernate

Configuring logging in Hibernate

Page 23: Intro To Hibernate

Basic O/R Mapping

Page 24: Intro To Hibernate

Hibernate-Mapping

Page 25: Intro To Hibernate

Class Element

Page 26: Intro To Hibernate

ID element

Page 27: Intro To Hibernate

Composite ID Element

Page 28: Intro To Hibernate

Built in Types

Page 29: Intro To Hibernate

Mapping Collections

Page 30: Intro To Hibernate

Persistent Collections

Page 31: Intro To Hibernate

Emp model table relationship

Page 32: Intro To Hibernate

Mapping Set

Page 33: Intro To Hibernate

Lazy Initialization

Page 34: Intro To Hibernate

Component Mapping

Page 35: Intro To Hibernate

Dependent Object

Page 36: Intro To Hibernate

Sample table definition

Page 37: Intro To Hibernate

Employee-Address data model

Page 38: Intro To Hibernate

Example of component mapping

Page 39: Intro To Hibernate

Address class

Page 40: Intro To Hibernate

Mapping Component

Page 41: Intro To Hibernate

Mapping Associations

Page 42: Intro To Hibernate

Associations

Page 43: Intro To Hibernate

Many to one association

<class name="com.entity.Emp" table="EMP">

...

...

<many-to-one name="dept"

column="DEPT_ID"

class="Department"

not-null="true" />

</class>

Page 44: Intro To Hibernate

Parent child relationship

<class name="com.entity.Dept" table="DEPT">......<set name="employees" inverse="true" cascade="all-delete-orphan"> <key column="DEPT_ID" /> <one-to-many class="Emp" />

</set></class>

Page 45: Intro To Hibernate

One to one relationship

Employee-Person Object Dig

Page 46: Intro To Hibernate

One to one association

<class name="com.entity.Emp" table="EMP">

...

...

<one-to-one name="person" class="Person" />

</class>

Page 47: Intro To Hibernate

Many to many relationship

Page 48: Intro To Hibernate

Link table structure

EMP_TASKS table

Page 49: Intro To Hibernate

Many to many association

Page 50: Intro To Hibernate

Manipulating Persistence Data

Page 51: Intro To Hibernate

Persistence Lifecycle

Page 52: Intro To Hibernate

Transient Objects

Page 53: Intro To Hibernate

Persistent Objects

Page 54: Intro To Hibernate

Detached Objects

Page 55: Intro To Hibernate

Persistence Manager

Page 56: Intro To Hibernate

Making an object persistent

Page 57: Intro To Hibernate

Retrieving persistent object

Page 58: Intro To Hibernate

Updating persistent object

Page 59: Intro To Hibernate

Committing a database transaction

Page 60: Intro To Hibernate

Transaction and Concurrency

Page 61: Intro To Hibernate

Understanding database transactions

Page 62: Intro To Hibernate

Hibernate Transaction API

Page 63: Intro To Hibernate

JDBC Transactions

Page 64: Intro To Hibernate

2 Phase Transactions

Page 65: Intro To Hibernate

Hibernate Query LanguageHQL

Page 66: Intro To Hibernate

Introduction to HQL

Page 67: Intro To Hibernate

Query Interface

Page 68: Intro To Hibernate

Binding Parameters

Page 69: Intro To Hibernate

An example of simple Query

Page 70: Intro To Hibernate

HQL supports:

WHERE clause ORDER BY clause GROUP BY clause All types of joins (inner, left outer, right outer,

outer) Subquery etc

Page 71: Intro To Hibernate

Reporting Queries

Page 72: Intro To Hibernate

Criteria Queries

Page 73: Intro To Hibernate

Simple Criteria example

Page 74: Intro To Hibernate

Other query types supported

Query By Example Native SLQ query

Page 75: Intro To Hibernate

Cache

Page 76: Intro To Hibernate

Mass Update/Deletes

Page 77: Intro To Hibernate

Hibernate Cache Architecture

Page 78: Intro To Hibernate

Hibernate First Level Cache

Page 79: Intro To Hibernate

Hibernate Second Level Cache

Page 80: Intro To Hibernate

Caching Strategies

Page 81: Intro To Hibernate

Enabling Caching

Page 82: Intro To Hibernate

Any Questions ?

Page 83: Intro To Hibernate

Thanks !!!