package com.uubbs.bean;import java.lang.Long;public class UserInfo{ /** identifier field */
private Long ID; /** persistent field */
private String UserName; /** persistent field */
private String PassWord; /** default constructor */
public UserInfo() {
} public Long getID() {
return this.ID;
} public void setID(Long id) {
this.ID = id;
} public String getUserName() {
return this.UserName;
} public void setUserName(String username) {
this.UserName = username;
} public String getPassWord() {
return this.PassWord;
} public void setPassWord(String passwd) {
this.PassWord = passwd;
}
}
private Long ID; /** persistent field */
private String UserName; /** persistent field */
private String PassWord; /** default constructor */
public UserInfo() {
} public Long getID() {
return this.ID;
} public void setID(Long id) {
this.ID = id;
} public String getUserName() {
return this.UserName;
} public void setUserName(String username) {
this.UserName = username;
} public String getPassWord() {
return this.PassWord;
} public void setPassWord(String passwd) {
this.PassWord = passwd;
}
}
解决方案 »
- 在servlet 中用apache 的fileUp组件上传乱码问题
- 帮忙!!使用middlegen自动生成映射文件遇到的问题
- Java核心编程视频教程
- javamail邮件服务器建立...高手进
- struts2中的配置问题
- struts2标签如何实现for循环
- struts中的logic标签
- EJB初学者问题
- 使用Java对FTPS服务器文件操作?求解
- SpringBoot RestTemplate返回ArrayList<LinkedHashMap>赋给List<Template>为什么不报错
- jms订阅/发布模式的应答问题
- 请各位兄弟都来看看,快过年了,交流交流经验,想想Struts+hibernate:)
import com.uubbs.bean.UserInfo;
public interface IUserInfoDAO {
public UserInfo findUserInfoByUserName(String username);
public UserInfo saveUserInfo(UserInfo userinfo);
}UserInfoDAOImpl.java:package com.uubbs.dao.hibernate;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.uubbs.bean.UserInfo;
import com.uubbs.dao.IUserInfoDAO;
import org.springframework.dao.DataAccessException;
import java.util.List;public class UserInfoDAOImpl extends HibernateDaoSupport implements IUserInfoDAO{
private static final String LOAD_BY_USERNAME ="from UserInfo ui where ui.UserName = ?";
public UserInfoDAOImpl() {
super();
}
public UserInfo findUserInfoByUserName(String username) {
List l = getHibernateTemplate().find(LOAD_BY_USERNAME, username);
if (l.size() == 0) {
return null;
}
else {
return (UserInfo) l.get(0);
}
}
public UserInfo saveUserInfo(UserInfo userinfo)
{
try {
getHibernateTemplate().saveOrUpdate(userinfo);
return userinfo;
}
catch (DataAccessException ex)
{
return null;
}
}
}
<beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>
com.microsoft.jdbc.sqlserver.SQLServerDriver
</value>
</property>
<property name="url">
<value>
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=BBS
</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>china</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="mappingResources">
<list>
<value>com/uubbs/bean/UserInfo.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean> <bean id="userInfoDAOImpl" class="com.uubbs.dao.hibernate.UserInfoDAOImpl">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="userInfoDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userInfoDAOImpl" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean> </beans>
/*
* Created on 2005-1-18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.uubbs.sys;
import org.springframework.context.support.*;
import com.uubbs.bean.UserInfo;
import com.uubbs.dao.IUserInfoDAO;/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/public class AppContext { private static AppContext instance; private AbstractApplicationContext appContext; public synchronized static AppContext getInstance() {
if (instance == null) {
instance = new AppContext();
}
return instance;
} private AppContext() {
this.appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
} public AbstractApplicationContext getAppContext()
{
return appContext;
}
public static void main(String[] args) throws Exception{
AppContext ba=new AppContext();
System.out.println("start");
UserInfo ui=new UserInfo();
UserInfo uu=new UserInfo();
ui.setUserName("logon");
ui.setPassWord("reg");
IUserInfoDAO bb=(IUserInfoDAO)ba.getAppContext().getBean("userInfoDAOProxy");
uu=bb.saveUserInfo(ui);
System.out.println(uu.getID());
System.out.println(uu.getUserName());
System.out.println(uu.getPassWord());
}
}测试的结果是:(输出以下数据)
start
Hibernate: insert into UserInfo (UserName, PassWord) values (?, ?) select scope_identity()
45
logon
reg但是到数据库中去查询的时候,数据并没有写进去。
不过当我手工往数据库中添加数据的时候发现ID(UserInfo的主键,为自动增长列)有点奇怪,运行测试程序之前,ID为44,我手工加入进去的数据的ID为46,也就是说测试中ID确实曾经差点加入进去了,但是失败了,所以我想知道为什么没有saveorUpdate()成功。
应该是被缓存了,还没有进行事务提交,因此需要使用自动提交。我也遇到这样的情况。例如:
我最初的代码是下面这样:session = HibernateSessionFactory.currentSession();
session.save(data);
session.flush();
添加了100条数据,结果在数据库看不到,后来代码改成下面的样子:session = HibernateSessionFactory.currentSession();
Transaction aa = session.beginTransaction();
session.save(data);
session.flush();
aa.commit();
就写入到数据库了。
多谢你的提示:应该是被缓存了,还没有进行事务提交,因此需要使用自动提交。我已经解决这个问题了。
作为存进数据库的代码:uu=bb.saveUserInfo(ui);中的方法saveUserInfo必须在
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
中说明,结果我的代码没有说明,所以错误就出现了。
如果将它改成
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
jiu