我正在启动一个新的数据库应用程序,我想知道在对象(使用UML)启动设计并相应地构建数据库模式,或者从数据库的设计(使用ER)开始并创建对象是否更好因此.
这两种方法的优点和缺点是什么?
(我认为这不重要,但以防万一:我打算使用Java和Hibernate)
我刚刚继承了一个使用Git维护的项目.有一次,代码被部署到3个独立的系统上,每个系统都维护着自己的分散式Git资源库.
3个系统中的每一个都在3个不同方向上扩展了原始基础系统.3个系统中没有一个系统相互同步.一些更改在主分支上,其他更改在新分支上.
如何将3种不同的来源组合在一起,以便我可以:
我创建了一个带有暴露(声明)服务的OSGi包.如果我,当调用激活时,注意到某些东西是不对的,这样我就无法提供服务,我需要防止它暴露.目前激活功能如下:
public void activate(ComponentContext context, Map<String, Object> properties) {
pid = (String) properties.get(Constants.SERVICE_PID);
try {
...
}
catch(Exception e) {
context.disableComponent(pid);
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是只包装/传播异常(或抛出一个新异常,取决于),如下所示:
public void activate(ComponentContext context, Map<String, Object> properties) {
try {
...
}
catch(Exception e) {
throw new ComponentException("Some reason");
}
}
Run Code Online (Sandbox Code Playgroud)
我找不到OSGi Service Platform Service Compendium中关于声明性服务的部分中指定的正确行为,但我可能会遗漏某些内容
我有以下解决方案项目结构:
Application.Core.Entities
Application.Xtend.CustomerName.Entities
在核心项目中,我有一个实体客户指责.在XTend项目中,我定义了一个实体,它将Customer子类命名为xCustomer(此时缺少更好的名称......).
这里的想法是我们的应用程序中有一个Core域模型.然后,客户可以创建一个包含核心模型扩展的新程序集.当扩展程序集存在时,智能IRepository类将返回核心类的子类.
我试图在NHibernate中映射这种关系.使用Fluent NHibernate我能够生成这个映射:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
default-lazy="false"
assembly="NHibernate.Core.Entites"
namespace="NHibernate.Entites"
default-access="field.camelcase-underscore">
<!-- Customer is located in assembly Application.Core.Entities -->
<class name="Customer" table="Customers" xmlns="urn:nhibernate-mapping-2.2">
<id name="Id" column="Id" type="Int64">
<generator class="native" />
</id>
<component name="Name" insert="true" update="true">
<property name="LastName" column="LastName" length="255" type="String" not-null="true">
<column name="LastName" />
</property>
<property name="FirstName" column="FirstName" length="255" type="String" not-null="true">
<column name="FirstName" />
</property>
</component>
<!-- xCustomer is located in assembly Application.XTend.CustomerName.Entities -->
<joined-subclass …Run Code Online (Sandbox Code Playgroud) 我有一个映射在datacontext中的表.这是感兴趣的列的属性和属性:
[Column(Storage="_CustomerNumber", DbType="VarChar(25)")]
public string CustomerNumber
{
Run Code Online (Sandbox Code Playgroud)
实际上,该列是varchar(25)并具有索引.
我有一些简单的代码:
DataClasses1DataContext myDC = new DataClasses1DataContext();
myDC.Log = Console.Out;
List<string> myList = new List<string>() { "111", "222", "333" };
myDC.Customers
.Where(c => myList.Contains(c.CustomerNumber))
.ToList();
Run Code Online (Sandbox Code Playgroud)
哪个生成此SQL文本:
SELECT [t0].[CustomerNumber], [t0].[CustomerName]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[CustomerNumber] IN (@p0, @p1, @p2)
-- @p0: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [111]
-- @p1: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [222]
-- @p2: Input NVarChar (Size = …Run Code Online (Sandbox Code Playgroud) 我试图将一个位插入一个字节数组,这会将字节数组中的所有位移到左边.
假设我有一个Java字节数组,如下所示:
byte[] byteArray = new byte[2];
byteArray[0] = 0x11
byteArray[1] = 0x00
Run Code Online (Sandbox Code Playgroud)
在二进制文件中,此字节数组表示为:
0001 0001 0000 0000
Run Code Online (Sandbox Code Playgroud)
现在我想在第三位位置插入一个零(丢失字节数组中的最后一位),结果是:
0000 1000 1000 0000
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法在Java中执行此操作?我知道BigInteger类可以将整个字节数组转换为二进制字符串(然后以这种方式插入并转换回来),但这似乎效率低下.
提前致谢.
希望我能正确解释这个问题.我有3个课程来处理我的实体.
@MappedSuperclass
public abstract class Swab implements ISwab {
...
private Collection<SwabAccounts> accounts;
...
}
@Entity
@Table(name="switches")
@DiscriminatorColumn(name="type")
@DiscriminatorValue(value="DMS500")
public class DmsSwab extends Swab implements ISwab, Serializable {
...
private ObjectPool pool;
...
@Transient
public ObjectPool getPool(){
return pool;
}
...
}
@Entity(name="swab_accounts")
public class SwabAccounts implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int swab_account_id;
private int swab_id;
...
}
Run Code Online (Sandbox Code Playgroud)
在EJB中,查询正在以这种方式进行
DmsSwab dms = em.find(DmsSwab.class, 2);
List<Swab> s = new ArrayList<Swab>(1);
s.add(dms); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个新项目,我正在使用存储库模式,我有一个从数据库中提取数据的存储库和一个使用存储库并执行所有业务逻辑的"服务"类.
类似于以下内容;
public class UserRepository : IUserRepository
{
public IQueryable<User> GetUsers()
{
// do stuff
}
}
public class UserService
{
public IList<User> GetUserById
{
var rep = new UserRepository();
var users = rep.GetUsers();
// do business logic
return users.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
你会测试UserService和UserRepository吗?或者你认为只测试服务就足够了吗?我认为,因为服务正在使用存储库它应该很有趣,但它确实会破坏代码覆盖率.