update w native query defed at mpg file using hibernate

getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session) throws HibernateException, SQLException {
Query query = session.getNamedQuery("updateSample");
query.setParameter("firstColumn", firstValue, Hibernate.STRING);
query.setParameter("lastColumn", lastValue, Hibernate.INTEGER);
// query.setParameter("firstColumn", firstValue);
// query.setParameter("lastColumn", lastValue);
query.executeUpdate();
return null;
};
});

==================================================
<'sql-query name="updateSample">

<'![CDATA[
update
SAMPLETABLE
set
FIRSTCOLUMN = :firstColumn
where
LASTCOLUMN = :lastColumn
]]>

<'/sql-query>
==================================================

update w native query using hibernate

import java.sql.SQLException;

import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

...

getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery query = session
.createSQLQuery("UPDATE SAMPLETABLE SET FIRSTCOLUMN='STH', SECONDCOLUMN='NTH' where LASTCOLUMN='8318'");
query.executeUpdate();
return null;
};
});

...

ref:
http://forum.springframework.org/archive/index.php/t-18111.html

alias


|<'hibernate-mapping>
|
| <'sql-query name="selectSample">
| <'return alias="tempname" class="sample.SampleClass"><'/return>
|
| <'![CDATA[
| select * from sampletable
| ]]>
|
| <'/sql-query>
|
|<'/hibernate-mapping>


[alias] An alias generator for SQL identifiers.

jar for hibernate

Hibernate3(http://www.hibernate.org/)
hibernate3.jar
antlr-2.7.5H3.jar
asm-attrs.jar
asm.jar
cglib-2.1.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.jar
ehcache-1.1.jar
jta.jar
hibernateonrails.jar(http://www.fk.urban.ne.jp/home/kishida/soft/hibernateonrails-preview.zip)
Velocity1.4(http://jakarta.apache.org/velocity/)
velocity-dep-1.4.jar
Javassist3.0(http://www.csg.is.titech.ac.jp/~chiba/javassist/)
javassist.jar

ref:
http://www.fk.urban.ne.jp/home/kishida/kouza/hibonrails.html

MEMO: 関連のないテーブルの結合

複数のテーブルからデータを取得する場合のパフォーマンス対策として利用されるテーブル結合。
Hibernateでは、マッピング・ファイルでのJOINの設定や、HQLのfrom句でのJOIN指定により、結合を行うのが一般的。
ただし、これでは、Hibernateは永続オブジェクトの関連をたどって結合を行うため、関連のないオブジェクト間の結合は不可。

解決策は2つ。


HQLのwhere句に結合条件を記述する方法。
例えば、関連のない2つのテーブル(TABLE_A、TABLE_B)と、それに対応した永続クラス(EntityA、EntityB)がある。ここで、テーブルTABLE_AのフィールドID_AとテーブルTABLE_B のフィールドID_Bとの間で結合を行うものとして、それに対応するクラスEntityAのプロパティがidA、クラスEntityBのプロパティが idBだとする。その場合、結合を行うためのHQL文は、以下のようになる。
from EntityA a, EntityB b where a.idA = b.idB


ネイティブSQLクエリを用いて、結合を行うためのSELECT文を直接記述するという方法。
例えば、上記の例において結合を行うためのSELECT文は、以下のようになる(以下は、RDBMSにMySQLを用いる場合)。
SELECT * FROM TABLE_A TA, TABLE_B TB WHERE TA.ID_A = TB.ID_B

また、ネイティブSQLクエリを用いると、HQLでは使えないfrom句でのJOIN指定も利用できる(以下参照)。
SELECT * FROM TABLE_A TA JOIN TABLE_B TB ON TA.ID_A = TB.ID_B


いずれの場合も、戻り値となるListオブジェクトには、オブジェクト型の配列(Object[])が格納される。上記の場合であれば、EntityAとEntityBの両オブジェクトが格納された配列が検索結果の行数分だけ返される。

ref:
http://www.itarchitect.jp/enterprise/-/49469-4.html

SampleDaoImpl extends HibernateDaoSupport


public class SampleDaoImpl extends HibernateDaoSupport {

public void create(Hoge hoge) {
getHibernateTemplate().save(hoge);
}

public void update(Hoge hoge){
getHibernateTemplate().update(hoge);
}

public Hoge findById(int id){
return (Hoge)getHibernateTemplate().load(Hoge.class, id);
}

public void delete(Hoge hoge){
getHibernateTemplate().delete(hoge);
}

public List findByName (String name){
return getHibernateTemplate().find("from Hoge hoge where hoge.name like ?", name + "%");
}

}

bean def file

<'?xml version="1.0" encoding="UTF-8"?>
<'beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<'!-- service definition -->
<'bean id="sampleService" class="service.SampleServiceImpl">
<'property name="sampleDao">
<'ref local="sampleDaoImpl"/>
<'/property>
<'/bean>

<'bean id="sampleDaoImpl" class="dao.SampleDaoImpl">
<'property name="sessionFactory">
<'ref local="sessionFactory"/>
<'/property>
<'/bean>

<'!-- LocalDataSource HSQL -->
<'bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<'property name="driverClassName">
<'value>com.microsoft.sqlserver.jdbc.SQLServerDriver<'/value>
<'/property>
<'property name="url">
<'value>jdbc:postgresql://localhost:5432;sampleapp<'/value>
<'/property>
<'property name="username"><'value>un<'/value><'/property>
<'property name="password"><'value>pw<'/value><'/property>
<'/bean>


<'bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<'property name="dataSource">
<'ref local="dataSource"/>
<'/property>
<'property name="mappingResources">
<'list>
<'value>bean/sampleBean.hbm.xml<'/value>
<'/list>
<'/property>
<'property name="hibernateProperties">
<'props>
<'prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect<'/prop>
<'prop key="hibernate.show_sql">true<'/prop>
<'prop key="hibernate.use_outer_join">true<'/prop>
<'/props>
<'/property>
<'/bean>

<'!-- transactionManager -->
<'bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<'property name="sessionFactory" ref="sessionFactory"/>
<'/bean>

<'bean id="dao" class="dao.SampleDaoImple">
<'property name="sessionFactory" ref="sessionFactory"/>
<'/bean>

<'bean id="service"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<'property name="transactionManager" ref="transactionManager"/>
<'property name="target" ref="serviceTarget"/>
<'property name="transactionAttributes">
<'props>
<'prop key="query*">PROPAGATION_REQUIRED, readOnly<'/prop>
<'/props>
<'/property>
<'/bean>

<'bean id="serviceTarget" class="service.SampleServiceImpl">
<'property name="dao" ref="dao"/>
<'/bean>


<'/beans>

Top

HOME

09 | 2008/10 | 11
- - - 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 29 30 31 -

QR

name:
mail:
title:
body:

N/A