Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits –...

23
Agenda • What is Hibernate – Overview – Benefits – Example • Spring Integration – Benefits – Example • Questions

Transcript of Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits –...

Page 1: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Agenda

• What is Hibernate– Overview– Benefits– Example

• Spring Integration– Benefits– Example

• Questions

Page 2: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

What is Hibernate?

• Popular Open Source Object/Relational Mapping (ORM) tool

• Transparent persistence for POJOs (Plain Old Java Objects)

Page 3: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Object/Relational Mapping

JavaObjectint id;String name;String getName()int getId()void setName(String)void setId(int)

SQL Table

id [int] primary key,name [varchar(50)]

Magic Happens Here(O/R Mapper – i.e. Hibernate)

Page 4: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Other ORM Solutions

• “Open”– iBatis SQL Maps– JDO– JPA

• Commercial– TopLink

Page 5: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Why Hibernate?

• Retains natural object model (transparent)• Minimizes Code• Does not require a container• Model is not tied to persistance

implementation

Page 6: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Hibernate's Goal

• Remove 95% of common data persistence problems

Page 7: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Person.java

Name.java

person.hbm.xml person table

Hibernate Component MappingExample

Page 8: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Cat.java

cat.hbm.xml

cats table

Hibernate Collection Mappingwith recursion and subclassing

Page 9: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

How do you use it?

• Act on your data model• Query in SQL and/or HQL• ... or using your object model

Page 10: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Auction Object Model

Page 11: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Persistant Class

• Default Constructor• Getters/Setters• Collections use

interface types• Identifier property

public class AuctionItem {private Long _id;private Set _bids;private Bid _successfulBidprivate String _description;

public Long getId() {return _id;

}private void setId(Long id) {

_id = id;}public String getDescription() {

return _description;}public void setDescription(String desc) {

_description=desc;}…

}

Page 12: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

XML Mapping

• Readable metadata

• Column/Table map

• Key Generation• Collections• Fetching

Strategies

<class name=“AuctionItem” table=“AUCTION_ITEM”>

<id name=“id” column=“ITEM_ID”>

<generator class=“native”/>

</id>

<property name=“description” column=“DESCR”/>

<many-to-one name=“successfulBid”column=“SUCCESSFUL_BID_ID”/>

<set name=“bids”

cascade=“all”

lazy=“true”>

<key column=“ITEM_ID”/>

<one-to-many class=“Bid”/>

</set>

</class>

Page 13: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Working with Data

Session session = sessionFactory.openSession();

Transaction tx = s.beginTransaction();

AuctionItem item =

(AuctionItem) session.get(ActionItem.class, itemId);

item.setDescription(newDescription);

tx.commit();

session.close();

Retrieve an AuctionItem and change description

Page 14: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Working with DataRetrieve an AuctionItem and create a new persistent Bid

Bid bid = new Bid();bid.setAmount(bidAmount);

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

AuctionItem item = (AuctionItem) session.get(ActionItem.class, itemId);

bid.setItem(item);item.getBids().add(bid);

tx.commit();session.close();

Page 15: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Hibernate in codeRetrieve an AuctionItem and create a new persistent Bid

Bid bid = new Bid();bid.setAmount(bidAmount);

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

AuctionItem item = (AuctionItem) session.get(ActionItem.class, itemId);

bid.setItem(item);item.getBids().add(bid);

tx.commit();session.close();

Page 16: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Hibernate in code

Retrieve an AuctionItem and create a new persistent Bid

Session session = sf.openSession();Transaction tx = session.beginTransaction();AuctionItem item =

(AuctionItem) session.get(ActionItem.class, itemId);tx.commit();session.close();

item.setDescription(newDescription);

Session session2 = sf.openSession();Transaction tx = session2.beginTransaction();session2.update(item);tx.commit();session2.close();

Page 17: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Benefits

• Metadata controlled persistence• Transparent - working with the model, not

the data access technology• Pooling, Caching, Transactions can all be

handled outside of our code

Page 18: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Integrating Spring and Hibernate

Page 19: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Spring and Hibernate

• Benefits• Examples

Page 20: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Benefits

• Resource Management– IoC / AOP Session Management

• Extended Transaction Support– JTA and/or JDBC– Flexible Transaction Demarcation

• Programmatic• Declarative (Spring's XML config)

• HibernateTemplate– Simplifies Hibernate API

Page 21: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Spring IoC

Session

POJO

DAO

setSession()

save()

Page 22: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Spring Interceptors (AOP)

Business Logic

getCatById()

save(Cat)

DAOInterceptor

Session

Spring Framework

Page 23: Agenda What is Hibernate – Overview – Benefits – Example Spring Integration – Benefits – Example Questions.

Spring’s HibernateTemplate

Hibernate Only:

HibernateTemplate:

public User getUserByEmailAddress(final String email) {try {

Session session = sessionFactory.openSession();List list = session.find(

"from User user where user.email=?",email,Hibernate.STRING);

return (User) list.get(0);}finally {

session.close();}

}

public User getUserByEmailAddress(final String email) {List list = getHibernateTemplate().find(

"from User user where user.email=?", email,

Hibernate.STRING);return (User) list.get(0);

}