初识Hibernate

其实之前也是了解过Hibernate,但是现在博主为了避免手高眼低的情况发生,决定对陌生的Hibernate再次造访,之前的博文是从朋友(imfuwei.com)那里偷过来的。所以不是我自己去学习的,现在我自己学习了一下,然后我在完善一下Hibernate。
Hibernate的作者是Gavin King。其原是Jboss下的一名员工,因为Hibernate的缘故,整个公司被redhat收购,详情去百度,本博主不讲故事。
目前用的是官方最新版的5.2.10环境,配合MySQL数据库以及其Driver For Java还有就是Junit(一个单元测试工具)后面打包Jar包。
Hibernate工作原理?不存在的,我也不知道的,简单绘个小图吧

 

画不来 偷了一张

Hibernate数据连接重点(我认为)

DB连接四要素

方言

C3P0数据库源

当前Session上下文

1.Thread

2.Jpa(Java事务API) 座分布式用

3.Spring Session Context(整合框架会用到)

接下来,就是配置Hibernate.hbm.xml配置文件

首先找到配置映射约束文件

hibernate-core-5.2.10.Final.jar

这个Jar包的org.hibernate包里面包含着约束文件,如两图所示

configuration是我们要的配置文件,Mapping是映射文件,所以先从configuration开刀

我用的dtd,红框勾选的地方

新建一个hibernate.cfg.xml在Src跟目录下

然后复制以下代码

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
<session-factory>
<!– 连接数据库的四要素 –>
<property name=”hibernate.connection.driver_class”>com.mysql.jdbc.Driver</property>
<property name=”hibernate.connection.url”>jdbc:mysql://127.0.0.1:3306/hibernate?useSSL=true</property>
<property name=”hibernate.connection.username”>root</property>
<property name=”hibernate.connection.password”>123</property>
<!– 方言 –>
<property name=”hibernate.dialect”>org.hibernate.dialect.MySQL57Dialect</property>
<!– 数据库连接池(数据源) –>
<property name=”hibernate.connection.provider_class”>org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<!– 当前Session上下文 –>
<property name=”hibernate.current_session_context_class”>thread</property>
<!– 自动建表 –>
<property name=”hibernate.hbm2ddl.auto”>update</property>
<!– 显示SQL语句 –>
<property name=”hibernate.show_sql”>true</property>
<!– 配置映射 –>
<mapping resource=”com/minedeed/beans/Student.hbm.xml” />

 

</session-factory>

 

</hibernate-configuration>

 

然后就是新建一个beans包

新建一个student类,大家都懂

private Integer id;
private String name;
private Double score;

最后新建一个student.hbm.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd”>
<hibernate-mapping>
<!– 类到表的映射,属性到字段的映射 –>
<class name=”com.minedeed.beans.Student” table=”t_student”>
<id name=”id” column=”id”>
<generator class=”native”></generator>
</id>
<property name=”name” column=”name”></property>
<property name=”score” column=”score”></property>
</class>
</hibernate-mapping>

然后test
//1.加载主配置文件
Configuration cfg = new Configuration().configure();
//2.创建Session工厂
SessionFactory sf = cfg.buildSessionFactory();
//3.获取session
Session session = sf.getCurrentSession();
Student student = new Student();
student.setId(1);
student.setName(“张三”);
student.setScore(99.5);
//4.开启事务
try {
session.beginTransaction();
session.save(student);
session.getTransaction().commit();
} catch (Exception e) {
// TODO Auto-generated catch block
//事务回滚
session.getTransaction().rollback();
}

然后结束

 

最后完美

 

 

 

Hibernate框架简单应用步骤

Hibernate框架应用步骤


引入hibernate所需jar包


1.创建实体类,(最好实现序列化接口)

“` public class Student{ private Integer id; private String name; private int age; private double score; public Student() { super(); // TODO Auto-generated constructor stub } public Student(String name, int age, double score) { super(); this.name = name; this.age = age; this.score = score; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } @Override public String toString() { return “Student [id=” + id + “, name=” + name + “, age=” + age + “, score=” + score + “]”; }

} “`


2.实体类到数据库的映射关系

“` <?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN” “http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd”> <hibernate-mapping> </hibernate-mapping>

“`

3.测试hibernate配置

“` public class MyTest { @Test public void testSave() { // 1.加载主配置文件 Configuration configure = new Configuration().configure(); // 2.创建Session工厂 SessionFactory sessionFactory = configure.buildSessionFactory(); // 3.获取Session Session session = sessionFactory.getCurrentSession(); try { // 4.开启事务 session.beginTransaction(); // session.getTransaction().begin();

        // 5.操作
        session.save(new Student("张三", 23, 93.5));
        // 6.事务提交
        session.getTransaction().commit();
    } catch (Exception e) {
        e.printStackTrace();
        // 7.事务回滚
        session.getTransaction().rollback();
    }

}

}

“`

4.在src包下创建hibernate.cfg.xml文件,是hibernate的配置文件

“` <?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE hibernate-configuration PUBLIC “-//Hibernate/Hibernate Configuration DTD 3.0//EN” “http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd”> <hibernate-configuration> <session-factory>com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/zfw?useUnicode=true&&characterEncoding=utf-8 root

    <!-- 方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <!-- c3p0数据源 -->
    <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
    <!-- 当前Session上下文 -->
    <property name="hibernate.current_session_context_class">thread</property>

    <!-- 自动建表 -->
    <property name="hibernate.hbm2ddl.auto">update</property>

    <!-- 显示sql语句 -->
    <property name="hibernate.show_sql">true</property>

    <!-- 格式化sql语句 -->
    <property name="hibernate.format_sql">true</property>


    <!-- 注册映射文件,此配置要加在最后,因为上面执行完后,才映射到数据库中 -->
    <mapping resource="com/zfw/beans/Student.hbm.xml" />
</session-factory>

</hibernate-configuration>

“`

 

浅谈Google回归

最近几天,新闻一直被Google翻译刷屏了,说Google翻译能用了,我就纳闷了,Google翻译服务在大陆一直没停过啊,后来发现,原来如此,App更新了。感觉体验不错MD设计风格也很清爽,于是一直在用,我也很喜欢即时翻译的玩意,虽然体验起来不咋地,但实际上,对国内的翻译软件也有冲击吧,特别是有道和百度,为啥没金山呢,因为词霸是做词典出生的。有道和百度的翻译也是现在的主流。

首先说说这Google回归。因为之前的Google开发者回归了,大部分内容在中国已经可以访问了,这对开发者是一大利好,再也不用翻越那一道墙了(可是话说回来,翻这道墙有啥不方便的么)。紧接着,翻译App更新,地图(http://map.google.cn)是一直可以访问的。又有报道说,和ov大厂展开合作,预装Google服务。首先我们不谈回归成功与否。

Google为什么要再次来到大陆?是为了服务大陆人,还是为了宣扬其不作恶思想,去冲击百度。我想这些不是其主要原因,主要原因在于利益,一个商业公司,没有利益,是不会来的,我想,这也是当时退出中国大陆的原因。首先,来谈谈安卓,安卓是Google想在移动设备终端赚钱的一个工具,本身其目标就是赚钱。由于中国市场的特殊性,安卓的Google套件在大陆市场一直是被阉割的,所以,在大陆市场,一直没赚到钱。其次,愈来愈正版化的今天,Play市场的这块大肉也不能忘了大陆市场。音乐,游戏,电影,图书,这些具有赚钱的,自人也包含在内

而在pc个人市场,网络存储,国内走向了衰落,而Google这个时候出来,势必会笼络一大批人。还有Gmail(Gmail广告有点多),还有Google提供的广告。。。。。。。。。。。。。

企业市场,Google cloud 平台。

关于Google搜索?可能不会回归吧,因为没有多少利益,也没有多少人在用,全民百度一下的时代,能被Google it!取代?你可能会说,我就在用啊,对,你是在用,但是你用不代表中国网民都在用,因为已经习惯了百度一下。

获取onedrive 200G存储教程

国内云存储经过一次洗牌以后腾讯微云、百度网盘(原百度云)、新浪微盘以及三大运营商等都坚强的活了,不过有的不是限速,或者就是空间小,观察国外的网盘(其实叫做同步盘更好),像微软onedrive,google硬盘都是不错的选择。

本教程是关于onedrive获取200g的存储量,虽说onedrive又要未知原因无法访问(可能用户量太大,需要经常维护),所以推荐大家使用客户端访问,或者使用加速器之类的软件加速即可。

打开希捷获取连接,点击此处


重点来了,是序列好序列号一定是要NA96R开头。并且是三个字母结尾,因为现在很多人都刷了,所以拼凑是靠运气的,博主刷了几次才刷成功的


这一步点击跳过


看到那个Onedrive了么,点击吧,其余的不用管了


这个界面往下翻,


这个看个人略过


不停地下一步,第三步和第四部是必须完成的步骤



所以一定要完成


这里点击完成即可

出现这个即是兑换成功,如果出现


那就再来一次吧

淡淡很好

前段时间才知道deed在博客上偷偷的写我,但是很有感触,这段时间我们很好。今天deed给我看了一句话,大概意思是:当你身边的好朋友说他好的时候,而你自己觉得他是个傻逼,八九不离十他是个真心待你的人。deed这只傻逼,虽然我们在一起不久,虽然我们都有曾经,但他不嫌弃我,我也不嫌弃他。哈哈,其实很“嫌弃”。很感谢他的帮助,更感谢他的爱护。

前两天我们出去浪,短租了房,可以做饭,为了让他感受到我的贤良淑德,我开始下厨。可是在我做饭的过程中,他说了一句:如果这样我们两个都要亡了……(一看就是嫌弃我烧的)但是烧出来的感觉还是可以的啦,至少能吃……(放张图)

无尽的嫌弃之后,第二天让他自己来。(看他煎荷包蛋,连蛋都不会敲,啧啧啧)

嫌弃完了,终于能吃上了。给deed一点鼓励,第一次下厨,虽然就学了煎荷包蛋(也不知道学会没……)

这只傻逼智商真是没谁了,但是我依然会对他好。很开心和他的日子,现在在好好学习,希望1个月后我们都能考上。

正文结束,以下是番外:

我今天有感而发,所以写了一篇,本来直接打算用他的号写,可是这家伙说给我开个号,开就开呗,反正我电脑白痴,但自从有了deed,凡事电脑问题都不是问题。哈哈。deed这个人喜欢折腾电脑,这跟他的专业有关,我觉得他有潜力,有能力做好事情,以后还有很多事情要靠他呢。

总结一句,谁叫你是傻逼。淡淡现在很好。

交叉编译安卓busybox

我是在ubuntu14.04上使用交叉编译工具链编译arm 64位版busybox

第一步:在ubuntu上安装交叉编译链。

下载,解压,配置环境变量(PATH)。。。

第二步:到官网上下载busybox,解压

    wget http://busybox.net/downloads/busybox-2.23.tar.bz2
    tar -xjf busybox-2.23.tar.bz2
    cd busybox-2.23/

第三步:配置,编译,安装busybox

我安装的交叉编译链为: aarch64-Linux-gnu-

    配置: 
     生成默认arm版配置文件.config:  
        make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
     通过图形界面修改配置文件.config: 
        make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
     在编译选项中,一般选择静态方式

编译:

编译:make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- 

   安装(其实就是把生成的文件汇聚到一起(默认是在当前目录_install文件夹中):
      make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- install

在_install 文件下有: sbin  bin  usr linuxrc

不指定ARCH等参数,则编译x86版。

手动给boot.img添加init.d支持和内核ROOT

—————————————————–内核添加init.d————————————————————————

1.使用bootimg.exe解包内核(文章末尾提供下载链接,bootimg.exe需要和boot.img在同一目录下,然后打开系统cmd.exe,使用cd命令到达你放置bootimg.exe和boot.img的文件夹下,然后运行解包命令bootimg –unpack-bootimg)

2.进入解包目录(即你放置bootimg.exe和boot.img的文件夹了里),找到initrd文件夹进入。

3.在initrd文件夹找到inid.rc文件用notetap++打开,打开后搜索class_start core,在该代码上面另起一行添加如下代码,

4.在最底加入如下代码

  1. service sysinit /system/bin/logwrapper /system/xbin/busybox runparts /system/etc/init.d
  2. disabled
  3. oneshot

使用 bootimg.exe 打包内核
命令:bootimg.exe –-repack-bootimg

打包完 boot-new.img 为修改好滴内核  boot-old.img为旧的内核

—————————————————–内核ROOT————————————————————————

解包内核里面有个default.prop,用notepad++打开default.prop如下:

  1. ro.secure=1
  2. ro.allow.mock.location=1
  3. ro.debuggable=1
  4. persist.service.adb.enable=1

如果ro.secure=0 就是允许我们运行adb root命令,通常内核root就是指ro.secure=0 将ro.secure=1修改成ro.secure=0,之后打包回来boot.img,这样就成功root了内核了!但是内核ROOT我们还要在 ROM里手动添加 权限控制软件和SU文件