Tag - java

hibernate java    2017-07-19 23:01:10    9

做了不少项目,遇到不少hibernate配置,对于hibernate.connection.autocommit值的设置,存在很多争议,一些人认为应该设置为true,一些人认为应该设置为false,而我坚决选择后者,下面就来讲讲我的理由吧


1、当在做业务系统的时候,大家都知道会在同一个操作中,一个业务可能包含多个子业务,那么就要进行多次提交,假设“业务A”中包含“子业务1”、“子业务2”、“子业务3”,如果是自动提交,那么可能的结果是子业务的其中一项或两项提交成功,而另一项提交失败,会回滚(这样的结果明显不符合我们惯有的思维);正确的结果,应该是,只要有一项提交失败,那么全体回滚。以事务的角度来说,整体应该属于同一事务,而自动提交的方式,明显不属于同一事务,数据混乱,也是难免的

2、对于并发写入比较高的应用,应尽量减少数据库交互,而hibernate框架一般都是单条操作,若想批量提交,hibernate.connection.autocommit值是必须设置为false的,常用的手段就是在此值设置为false的情况下,将要insert或者update的对象放到集合中,使用merge方法与flush结合的方式进行批量提交


不少人(包括经验丰富的老工程师)都认为,为什么使用hibernate,为什么使用自动提交,就是因为其方便,事务由hibernate来管理,而不用手动提交,简单很多,我很奇怪,做的明明是业务系统,为什么使用的却是自动提交的方式,并且存在问题是必须的,这些问题会随着时间逐渐显露,至于为什么,我也不了解了
 
 

 

by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(防止爬虫):http://blog.liuyingguang.cn
OpenBI问答社区:http://openbi.liuyingguang.cn/

jersey java    2017-07-19 22:59:19    10

 

关键代码:

application.java中

 

register(MultiPartFeature.class);


前端html中:

 

 

<form action="${path}/list/uploadExcel" method="post" enctype="multipart/form-data" accept-charset="utf-8">
	<p>
		<input type="file" name="file" /><br />
	</p>
	<input type="submit" value="上传" />
</form>


服务端(有略微的名称编码问题):

 

 

<span>	</span>@POST
	@Path("uploadExcel")
	@Consumes(MediaType.MULTIPART_FORM_DATA)
	public String uploadExcel(
			@FormDataParam("file") InputStream fileInputStream,
			@FormDataParam("file") FormDataContentDisposition disposition) {
		String imageName = Calendar.getInstance().getTimeInMillis()
				+ disposition.getFileName();
		//File file = new File("D:\\" + imageName);
		return "import data succeed";
	}



 

 

 


 

by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(防止爬虫):http://blog.liuyingguang.cn
OpenBI问答社区:http://openbi.liuyingguang.cn/

MongoDB java    2017-07-19 22:51:21    10
+++++++ 20160404 begin+++++++
maven环境:
<dependency>
	<groupId>org.mongodb</groupId>
	<artifactId>mongodb-driver</artifactId>
	<version>3.2.2</version>
</dependency>

+++++++ 20160404 end+++++++

1、当MongoDB没有添加使用auth认证方式的时候:
  MongoClientURI uri = new MongoClientURI("mongodb://192.168.100.140:27017/local",
                MongoClientOptions.builder().cursorFinalizerEnabled(false));
  MongoClient client = new MongoClient(uri);
  MongoDatabase db=client.getDatabase("local");
  MongoCollection<Document> collection = db.getCollection("system.users");
  List<Document> foundDocument = collection.find().into(new ArrayList<Document>());
  System.out.println(foundDocument);

2、当MongoDB启动的时候添加--auth参数启动MongoDB(即安全认证模式下)
  MongoClient client = null;
  ServerAddress serverAddress = new ServerAddress("192.168.100.140",27017);
  List<ServerAddress> seeds = new ArrayList<ServerAddress>();
  seeds.add(serverAddress);
  MongoCredential credentials = MongoCredential.createScramSha1Credential("admin", "admin", "admin".toChar
saiku2 java OpenSource    2017-07-19 22:24:35    10
以下步骤基于我的nexus足够多的资源,我稍后会将我部署的proxy的nexus库分享出来

1、下载源码:
    saiku2.6的源码:https://github.com/OSBI/saiku/tree/v2.6
    saiku-query的源码:https://github.com/OSBI/saiku-query
    saiku-ui的源码:https://github.com/OSBI/saiku-ui/tree/v2.6

2、将项目都导入到eclipse中
    修改saiku-core的pom.xml,将<repositories>节点的整块儿代码都注释掉,因为通过我实际编译的过程中发现很多jar包在一些nexus仓库上就是坏掉的,所以不要整体使用外部的nexus库
    然后将<repositories>节点的所有代码迁移到saiku-service中
3、构建saiku-query:
    在这里,我们需要将saiku-query项目deploy到我们自己的nexus库中,详细方式参考文章:
    http://note.youdao.com/share/?id=583871b294cbab9d015b037a2ec69fef&type=note
    
4、构建saiku-core(20160701修改),理论上,这里应该deploy到nexus中,但是eclipse本地构建,不需要deploy到eclipse也可以
    修改saiku-core和saiku-olap-util下的pom文件中仓库地址(repositories节点下)为:
    
<repository>
            <id>mine</id>
            <name>public Releases</name>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mine-meteorite-bi-release</id>
            <name>publ
java jpa exception    2017-07-19 22:15:22    266
错误栈:
org.zkoss.zk.ui.UiException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.TransactionException: JDBC begin transaction failed:  at [file:/C:/Users/lyg21_000/git/Saas/target/classes/main.zul, line:26]
 at org.zkoss.bind.impl.MiscUtil.mergeExceptionInfo(MiscUtil.java:175) ~[zkbind-7.0.4.jar:7.0.4]
 at org.zkoss.bind.BindComposer.doBeforeComposeChildren(BindComposer.java:161) ~[zkbind-7.0.4.jar:7.0.4]
 at org.zkoss.zk.ui.impl.UiEngineImpl.doBeforeComposeChildren(UiEngineImpl.java:930) ~[zk-7.0.4.jar:7.0.4]
 at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:869) ~[zk-7.0.4.jar:7.0.4]
 at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:826) ~[zk-7.0.4.jar:7.0.4]
 at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:735) ~[zk-7.0.4.jar:7.0.4]
 at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:797) ~[zk-7.0.4.jar:7.0.4]
 at org.zkoss.zk.ui.imp
2/7