Spring3 and JPA Integration(II)

本文介绍了一个使用Spring和JPA实现的简单管理层接口及其实现。通过定义PersonManager接口并提供其实现类PersonManagerImpl,实现了人员数据的基本CRUD操作,并通过Spring配置管理事务。
Spring3 and JPA Integration(II)

My manager Layer, the interface is com.sillycat.easyjpa.manager.PersonManager
package com.sillycat.easyjpa.manager;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import com.sillycat.easyjpa.model.Person;
@Transactional
public interface PersonManager
{
public List<Person> getAll();
public Person get(Integer id);
public void save(Person person);
public void updateName(Person person);
public void delete(Integer id);
}

The implementation of the interface is com.sillycat.easyjpa.manager.PersonManagerImpl
package com.sillycat.easyjpa.manager;

import java.util.List;

import com.sillycat.easyjpa.dao.PersonDAO;
import com.sillycat.easyjpa.model.Person;

public class PersonManagerImpl implements PersonManager
{
PersonDAO personDAO;
public List<Person> getAll()
{
return personDAO.getAll();
}
public Person get(Integer id)
{
return personDAO.get(id);
}
public void save(Person person)
{
if (person != null && person.getId() != null)
{
personDAO.update(person);
}
else
{
personDAO.insert(person);
}
}
public void updateName(Person person)
{
if (person != null && person.getId() != null)
{
personDAO.updateName(person.getName(), person.getId());
}
}
public void delete(Integer id)
{
personDAO.delete(id);
}
public void setPersonDAO(PersonDAO personDAO)
{
this.personDAO = personDAO;
}
}

Nothing special, just the common spring bean. My manager layer configuration file is manager-context.xml:
<bean id="personManager" class="com.sillycat.easyjpa.manager.PersonManagerImpl" >
<property name="personDAO" ref="personDAO" />
</bean>

The transaction configuration file is core-context.xml:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
lazy-init="false">
<property name="locations">
<list>
<value>classpath*:config.properties
</value>
</list>
</property>
</bean>
<!-- transaction manager,user&manage entityManagerFactory -->
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

right now, we have transaction configuration, we can do full test.
com.sillycat.easyjpa.manager.PersonManagerTest:
package com.sillycat.easyjpa.manager;

import java.util.Date;
import java.util.List;
import com.sillycat.core.BaseTestCase;
import com.sillycat.easyjpa.model.Person;
public class PersonManagerTest extends BaseTestCase
{
private PersonManager manager;
private Person item;
public void setUp() throws Exception
{
super.setUp();
manager = (PersonManager) ctx.getBean("personManager");
item = this.getItem();
}
public void tearDown() throws Exception
{
super.tearDown();
if (item != null && item.getId() != null)
{
manager.delete(item.getId());
}
}
public void testSave()
{
manager.save(item);
assertNotNull(item);
assertNotNull(item.getId());
}
public void testGetAll()
{
manager.save(item);
assertNotNull(item);
assertNotNull(item.getId());
List<Person> list = manager.getAll();
assertNotNull(list);
assertTrue(list.size() > 0);
}
public void testGet()
{
manager.save(item);
assertNotNull(item);
assertNotNull(item.getId());
Person t = manager.get(item.getId());
assertNotNull(t);
assertEquals(t.getName(),item.getName());
assertEquals(t.getId(),item.getId());
}
public void testUpdateName(){
manager.save(item);
assertNotNull(item);
assertNotNull(item.getId());
item.setName("haha");
item.setSex(false);
manager.updateName(item);
Person t = manager.get(item.getId());
assertNotNull(t);
assertEquals(t.getName(),"haha");
assertEquals(t.getSex(),true);
}
private Person getItem()
{
Person t = new Person();
t.setAge((short) 1);
t.setBirthday(new Date());
t.setName("testName");
t.setSex(true);
return t;
}
}

And I build this jar to the JBOSS_HOME/server/default/lib, my build.xml is as follow:
<project name="${app.name}" default="all" xmlns:ivy="antlib:org.apache.ivy.ant">
<!-- some variables used -->
<property file="build.properties" />
<property name%
带开环升压转换器和逆变器的太阳能光伏系统 太阳能光伏系统驱动开环升压转换器和SPWM逆变器提供波形稳定、设计简单的交流电的模型 Simulink模型展示了一个完整的基于太阳能光伏的直流到交流电力转换系统,该系统由简单、透明、易于理解的模块构建而成。该系统从配置为提供真实直流输出电压的光伏阵列开始,然后由开环DC-DC升压转换器进行处理。升压转换器将光伏电压提高到适合为单相全桥逆变器供电的稳定直流链路电平。 逆变器使用正弦PWM(SPWM)开关来产生干净的交流输出波形,使该模型成为研究直流-交流转换基本操作的理想选择。该设计避免了闭环和MPPT的复杂性,使用户能够专注于光伏接口、升压转换和逆变器开关的核心概念。 此模型包含的主要功能: •太阳能光伏阵列在标准条件下产生~200V电压 •具有固定占空比操作的开环升压转换器 •直流链路电容器,用于平滑和稳定转换器输出 •单相全桥SPWM逆变器 •交流负载,用于观察实际输出行为 •显示光伏电压、升压输出、直流链路电压、逆变器交流波形和负载电流的组织良好的范围 •完全可编辑的结构,适合分析、实验和扩展 该模型旨在为太阳能直流-交流转换提供一个干净高效的仿真框架。布局简单明了,允许用户快速了解信号流,检查各个阶段,并根据需要修改参数。 系统架构有意保持模块化,因此可以轻松扩展,例如通过添加MPPT、动态负载行为、闭环升压控制或并网逆变器概念。该模型为进一步开发或整合到更大的可再生能源模拟中奠定了坚实的基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值