Generic Persistent Layer Hibernate and spring 3.1

Posted by:

Ở Spring 3.1 thì không cần dùng HibernateTemplate nữa

Bắt đầu từ Spring 3.0 và Hibernate 3.0.1, quản lý Hibernate Session với Springs HibernateTemplate là không còn cần thiết nữa. Bây giờ có thể dùng contextual sessions – sessions được quản lý trực tiếp bởi Hibernate và được giữ sống xuyên suốt trong tầm vực của một transaction.

Kết quả là, bây giờ cách thực hành tốt nhất là sử dụng trực tiếp API Hibernate thay ...

Đọc tiếp
0

Hibernate Batch processing in Java

Posted by:

[code lang=”java”]

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<<strong>100000</strong>; i++ ) {
Customer customer = new Customer(…..);
session.save(customer);
}
tx.commit();
session.close();

[/code]

Viết code như vậy sẽ bị OutOfMemoryException khi chạy tới khoảng dòng thứ 50,000, Vì Hibernate caches tất cả những Customer vừa mới được thêm vào trong session-level.

Để không bị lỗi như vậy ta sẽ thực hiện Batch processing. Muốn thực hiện batch processing có rất nhiều cách.

Cách 1: batch size and disable second cache

Set JDBC ...

Đọc tiếp
1

Different Get and Load in Hibernate

Posted by:

[code lang=”java”]

public Account loadAccount(int id) {
return (Account) sessionFactory.getCurrentSession().get(Account.class,id);
}

[/code]

 

[code lang=”java”]

public Account loadAccount(int id) {
return (Account) sessionFactory.getCurrentSession().load(Account.class,id);
}

[/code]

Get: mỗi lần thực thi sẽ truy xuất vào database. Nếu không tìm thấy thì return null

Load: không truy xuất vào database mà tìm kiểm những Object persistent sau đó return proxy nên truy xuất sẽ nhanh hơn GET, nếu không tìm thấy dữ liệu thì sẽ throw Hibernate Exception (ObjectNotFoundException). Nhưng để kiểm tra đối tượng có tồn tại hay ...

Đọc tiếp
0

Hibernate Mapping with DB2

Posted by:

[code lang=”xml”] <?xml version="1.0"encoding="utf-8" ?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="com.quachson.Example" table="EXAMPLE" schema="DBO">

<id name="id" type="java.lang.Long">

<column name=<em>"ID"</em> />

<generator class=<em>"assigned"</em> />

</id>

<property name="varBlob" type="java.lang.String">

<column name="VAR_BLOB" />

</property>

<property name="varCharacter" type="java.lang.String">

<column name="VAR_CHARACTER" length="10" />

</property>

<property name="varClob" type="java.lang.String">

<column name="VAR_CLOB" />

</property>

<property name="varDate" type="java.util.Date">

<column name="VAR_DATE" length="10" />

</property>

<property name="varDbclob" type="java.lang.String">

<column name="VAR_DBCLOB" />

</property>

<property name="varDecimal" type="java.lang.Integer">

<column name=<em>"VAR_DECIMAL"</em> precision=<em>"5"</em> scale=<em>"0"</em> />

</property>

<property name=<em>"varDouble"</em> type=<em>"java.lang.Double"</em>>

<column name=<em>"VAR_DOUBLE"</em> precision=<em>"53"</em> scale=<em>"0"</em> />

</property>

<property name=<em>"varGraphic"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_GRAPHIC"</em> length=<em>"20"</em> />

</property>

<property name=<em>"varInteger"</em> type=<em>"java.lang.Integer"</em>>

<column name=<em>"VAR_INTEGER"</em> />

</property>

<property name=<em>"varLongvarchar"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_LONGVARCHAR"</em> length=<em>"32700"</em> />

</property>

<property name=<em>"varLongvargraphic"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_LONGVARGRAPHIC"</em> length=<em>"32700"</em> />

</property>

<property name=<em>"varReal"</em> type=<em>"java.lang.Float"</em>>

<column name=<em>"VAR_REAL"</em> precision=<em>"24"</em> scale=<em>"0"</em> />

</property>

<property name=<em>"varSmallint"</em> type=<em>"java.lang.Short"</em>>

<column ...

Đọc tiếp
0

Hibernate Mapping with MySQL 5

Posted by:

[code lang=”xml”]

<hibernate-mapping>

<class name=<em>"Hibernate"</em> table=<em>"hibernate"</em> catalog=<em>"test"</em>>

<id name=<em>"id"</em> type=<em>"java.lang.Long"</em>>

<column name=<em>"ID"</em> />

<generator class=<em>"identity"</em> />

</id>

<property name=<em>"varMediumint"</em> type=<em>"java.lang.Integer"</em>>

<column name=<em>"VAR_MEDIUMINT"</em> />

</property>

<property name=<em>"varInt"</em> type=<em>"java.lang.Integer"</em>>

<column name=<em>"VAR_INT"</em> />

</property>

<property name=<em>"varSmallint"</em> type=<em>"java.lang.Short"</em>>

<column name=<em>"VAR_SMALLINT"</em> />

</property>

<property name=<em>"varTinyint"</em> type=<em>"java.lang.Short"</em>>

<column name=<em>"VAR_TINYINT"</em> />

</property>

<property name=<em>"varFloat"</em> type=<em>"java.lang.Float"</em>>

<column name=<em>"VAR_FLOAT"</em> precision=<em>"12"</em> scale=<em>"0"</em> />

</property>

<property name=<em>"varDouble"</em> type=<em>"java.lang.Double"</em>>

<column name=<em>"VAR_DOUBLE"</em> precision=<em>"22"</em> scale=<em>"0"</em> />

</property>

<property name=<em>"varDecimal"</em> type=<em>"java.lang.Long"</em>>

<column name=<em>"VAR_DECIMAL"</em> precision=<em>"10"</em> scale=<em>"0"</em> />

</property>

<property name=<em>"varChar"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_CHAR"</em> length=<em>"50"</em> />

</property>

<property name=<em>"varVarchar"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_VARCHAR"</em> length=<em>"50"</em> />

</property>

<property name=<em>"varTinytext"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_TINYTEXT"</em> />

</property>

<property name=<em>"varText"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_TEXT"</em> length=<em>"65535"</em> />

</property>

<property name=<em>"varMediumtext"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_MEDIUMTEXT"</em> length=<em>"16777215"</em> />

</property>

<property name=<em>"varLongtext"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_LONGTEXT"</em> />

</property>

<property name=<em>"varBinary"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_BINARY"</em> />

</property>

<property name=<em>"varVarbinary"</em> type=<em>"java.lang.String"</em>>

<column name=<em>"VAR_VARBINARY"</em> ...

Đọc tiếp
0

Hibernate Core Notes

Posted by:

+ Class Domain

public class User implements Serializable {

private String username;

private Address address;

public User() {}

// SET, GET

}

Notes POJO:

1) Serializable, Hibernate không yêu cầu bắt buộc nhưng khi lưu trữ trong httpSession hay RMI thì lại bắt buộc nên tốt nhất là nên có

2) Construct của class domain bắt buộc luôn là không có tham số.

3) Identifier property: phải có thuộc tính khóa trong Class, ở DB có hay không có primary key cũng được.

4) Nên có 2 phương thức ...

Đọc tiếp
1