hibernate自动更新持久化类的问题?

有碰到过改变了一个持久化类的值但是没有主动更新到数据库结果hibernate自动把值更新到数据库了。看了网上的一些帖子和解答感觉语焉不详,说什么持久化类只要做了改变hibernate就会自动更新到数据库,照这个说法我们都不用手动去做update操作了?另外没有显式的update操作我怎么知道hibernate什么时候去更新呢?求高人解答,最好能有hibernate的官方说明或文档。

2个回答

hibernate对你的持久化bean做了动态代理,也就是你hibernate映射文件,对应的bean对根据cglib生成的新字节码文件,
在你做set操作改变其值的时候,它会试图去更新数据库数据

w172087242
little_how 如果有帮助,希望能结帖
接近 4 年之前 回复
w172087242
little_how 回复malie1981: 那是因为有些设置的是只读事务,那样就不会更新数据库,还有的手动清除了session缓存的结果集,清除方法evict
接近 4 年之前 回复
malie1981
malie1981 不好意思,忘了感谢你的回答了
接近 4 年之前 回复
malie1981
malie1981 但是这种自动更新的情况似乎并不是每次都发生。不然的话所有取出来的持久化类不是都要先分离掉才能做赋值操作了。但是一般项目代码并没有太过关注这个事情。我觉得hibernate这么做不是太好
接近 4 年之前 回复

是的,
隐式的修改:注解的实体和对象,修改了自动同步数据库(添加了对事物的支持)
显式的修改:就是比较传统的hql、sql这样的更新语句

建议使用显式的修改,比较明确

malie1981
malie1981 回复伈照不宣: 我看到hibernate持久化类不需要显式update只要调用flush就会自动提交,而自动flush的情况是1,调用某些查询的时候2,transaction commit的时候3,手动调用flush的时候,因为我在set某些值后又调用了实体中的get方法获得某些属性进行判断,在这个判断的过程中抛出异常,会不会是在调用get方法的时候会触发flush导致更新到数据库?
接近 4 年之前 回复
zy_281870667
Bug开发攻城狮 回复malie1981: 我们控制事务一般是使用spring的aop的,它是针对我们代码对session的操作而执行事务的,hibernate的隐式修改,是根据代理对象的字节码更新数据库的,不属于我们的代码操作,所以不属于aop管理,代码异常了,也就不能回滚了
接近 4 年之前 回复
malie1981
malie1981 回复伈照不宣: 这样好像有点麻烦。另外一个疑问是这个隐式修改难道不受事务控制吗?程序在设置了值之后后面的代码中抛出了runtimeexception错误,但是这个隐式更新还是执行了。如果是按照显式更新的事务理解发生runtimeexception整个事务应该是会回滚的
接近 4 年之前 回复
zy_281870667
Bug开发攻城狮 回复malie1981: 在service关闭事务,在执行特定的方法再开启事务,显式的修改
接近 4 年之前 回复
malie1981
malie1981 谢谢回复,请问有没有办法在hibernate的配置或者参数设置里不让他隐式修改,很多程序员并没有注意到这个问题,这样会很危险
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
有没有什么配置让hibernate自动持久化某个实体属性,而不级联更新这个属性

比如说,订单表中有客户资料,客户是界面选择的游离的实体对象,保存订单时应该只更新订单的客户ID,而不级联更新客户信息,目前是不用级联就会报org.hibernate.TransientObjectException: object references an unsaved transient instance。用级联就会修改客户数据,这个是业务不能接受的。目前我通过手工持久化客户对象是可以的,但是每个功能都这样做太麻烦了,效率也比较低,有没有好的办法,刚开始用hibernate,高手多帮忙!

Mysql数据库和Hibernate持久化框架

我想问一下,Mysql数据库中已经建立了主外键关系,MyEclipse中持久化类中还需要建立一对多,多对一的关联映射吗?如果要建立关联映射的话,怎么建。持久化类是我自己手写的,不是自动生成的。急啊!在线等!!!!![图片](https://img-ask.csdn.net/upload/201607/27/1469588406_450924.jpg)![图片](https://img-ask.csdn.net/upload/201607/27/1469588532_442970.jpg)![图片](https://img-ask.csdn.net/upload/201607/27/1469588443_796285.jpg)

HIBERNATE如何直接把瞬時TRANSIENT对象UPDATE成持久化对象

因为从表单出来的对象都是瞬时对象,但是UPDATE的时候岂不是还要重新把持久对象LOAD出来再封装值? 我用MERGE做提示好像和乐观锁冲突。所以大神帮忙应该怎么做啊

关于hibernate 事务提交的问题

近期做项目,遇到了一个问题,用hibernate做数据持久化,可是有的业务逻辑要求是这样的,三张表是独立的。 如何将三张表的增删改放到一个事务里面? 比如:我先保存一个新的人员信息。然后再查询出保存完之后的人员信息同时要update另外一张表里面。 问题就是:session.save(obj) 之后再查询的话。这个对象还是游离状态。会查询不到。 所以就不能后面的update操作

spring2.5.6 hibernate3.3.2 annotation无法持久化entity

请教一下各位: <br /> <br />试了一下spring2.5.6 MVC + hibernate3.3.2的annotation组合,在持久化实体时,没有报错,日志也显示调用到了相应的操作,但是数据库中却没有数据...,不知道是哪里有问题<img src="/images/smiles/icon_sad.gif"/> ,代码如下: <br /> <br /><strong>applicationContext.xml</strong> <br /><pre name="code" class="java"> &lt;context:property-placeholder location="classpath:jdbc.properties"/&gt; &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt; &lt;property name="driverClass" value="${jdbc.driverClassName}"/&gt; &lt;property name="jdbcUrl" value="${jdbc.url}"/&gt; &lt;property name="user" value="${jdbc.username}"/&gt; &lt;property name="password" value="${jdbc.password}"/&gt; &lt;property name="minPoolSize"&gt;&lt;value&gt;10&lt;/value&gt;&lt;/property&gt; &lt;property name="maxPoolSize"&gt;&lt;value&gt;100&lt;/value&gt;&lt;/property&gt; &lt;property name="maxIdleTime"&gt;&lt;value&gt;1800&lt;/value&gt;&lt;/property&gt; &lt;property name="acquireIncrement"&gt;&lt;value&gt;2&lt;/value&gt;&lt;/property&gt; &lt;property name="maxStatements"&gt;&lt;value&gt;100&lt;/value&gt;&lt;/property&gt; &lt;property name="initialPoolSize"&gt;&lt;value&gt;10&lt;/value&gt;&lt;/property&gt; &lt;property name="idleConnectionTestPeriod"&gt;&lt;value&gt;1800&lt;/value&gt;&lt;/property&gt; &lt;property name="acquireRetryAttempts"&gt;&lt;value&gt;30&lt;/value&gt;&lt;/property&gt; &lt;property name="breakAfterAcquireFailure"&gt;&lt;value&gt;true&lt;/value&gt;&lt;/property&gt; &lt;property name="testConnectionOnCheckout"&gt;&lt;value&gt;false&lt;/value&gt;&lt;/property&gt; &lt;/bean&gt; &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&gt; &lt;property name="dataSource" ref="dataSource"&gt;&lt;/property&gt; &lt;property name="annotatedClasses"&gt; &lt;list&gt; &lt;value&gt;com.zy.sa.test.entity.Userinfo&lt;/value&gt; &lt;/list&gt; &lt;/property&gt; &lt;!-- &lt;property name="packagesToScan" value="com.zy.sa.test.entity.*" /&gt; --&gt; &lt;property name="hibernateProperties"&gt; &lt;props&gt; &lt;prop key="hibernate.connection.provider_class"&gt;com.mchange.v2.c3p0.ComboPooledDataSource&lt;/prop&gt; &lt;prop key="hibernate.dialect"&gt;${hibernate_dialect}&lt;/prop&gt; &lt;prop key="hibernate.show_sql"&gt;${hibernate_show_sql}&lt;/prop&gt; &lt;prop key="hibernate.format_sql"&gt;true&lt;/prop&gt; &lt;prop key="hibernate.transcation.flush_before_completion"&gt;true&lt;/prop&gt; &lt;prop key="hibernate.generate_statistics"&gt;true&lt;/prop&gt; &lt;prop key="hibernate.connection.release_mode"&gt;auto&lt;/prop&gt; &lt;prop key="hibernate.autoReconnect"&gt;true&lt;/prop&gt; &lt;prop key="hibernate.bytecode.use_reflection_optimizer"&gt;true&lt;/prop&gt; &lt;/props&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory"/&gt; &lt;!-- 支持 @Transactional --&gt; &lt;tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /&gt; </pre> <br /> <br /><strong>annomvc-servlet.xml</strong> <br /><pre name="code" class="java"> &lt;!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --&gt; &lt;context:component-scan base-package="com.zy.sa.test" /&gt; &lt;context:annotation-config/&gt; &lt;!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; &lt;!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /&gt;</pre> <br /> <br /><strong>web.xml</strong> <br /> <br /><pre name="code" class="java">&lt;!-- Spring 服务层的配置文件 --&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;/param-value&gt; &lt;/context-param&gt; &lt;!-- 日志配置 --&gt; &lt;context-param&gt; &lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEF-INF/classes/log4j.properties&lt;/param-value&gt; &lt;/context-param&gt; &lt;!-- Spring 容器启动监听器 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;!-- 要负责处理由JavaBeans Introspector的使用而引起的缓冲泄露 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.util.IntrospectorCleanupListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;!-- 编码 --&gt; &lt;filter&gt; &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;UTF-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;init-param&gt; &lt;param-name&gt;forceEncoding&lt;/param-name&gt; &lt;param-value&gt;true&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &lt;!-- Hibernate Open Session In View --&gt; &lt;filter&gt; &lt;filter-name&gt;hibernateFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;!-- Hibernate Open Session In View --&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;hibernateFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; &lt;!-- 编码 --&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt; &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt; &lt;/filter-mapping&gt; &lt;!-- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的配置文件,以启动Spring MVC模块--&gt; &lt;servlet&gt; &lt;servlet-name&gt;annomvc&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;2&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;annomvc&lt;/servlet-name&gt; &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;welcome-file&gt;default.html&lt;/welcome-file&gt; &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt; &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;error-page&gt; &lt;exception-type&gt;java.lang.Exception&lt;/exception-type&gt; &lt;location&gt;/WEB-INF/common/uncaughtException.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;403&lt;/error-code&gt; &lt;location&gt;/WEB-INF/common/403.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;404&lt;/error-code&gt; &lt;location&gt;/WEB-INF/common/404.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;500&lt;/error-code&gt; &lt;location&gt;/WEB-INF/common/500.jsp&lt;/location&gt; &lt;/error-page&gt;</pre> <br /> <br /><strong>MyController.java</strong> <br /> <br /><pre name="code" class="java">@Controller @RequestMapping("/my.do") public class MyController { @Autowired private UserinfoService userinfoService; @RequestMapping public String my(Userinfo user) { System.out.println("my.do"); System.out.println("userinfoService: " + userinfoService); System.out.println(user); userinfoService.createUserInfo(user); return "userinfo_create"; } }</pre> <br /> <br /> <br /><strong>UserinfoServiceImpl.java</strong> <br /> <br /><pre name="code" class="java">@Service @Transactional public class UserinfoServiceImpl implements UserinfoService { @Autowired private UserinfoDao userinfoDao; @Override @Transactional(readOnly=false, propagation=Propagation.REQUIRED) public void createUserInfo(Userinfo user) { Userinfo userinfo = new Userinfo(); userinfo.setId("ww"); userinfo.setUserName("wangwu"); userinfo.setPassword("111"); userinfo.setEmail("ww@aaa.com"); userinfoDao.save(userinfo); userinfoDao.getSession().save(userinfo); } @Override @Transactional(readOnly=true) public List&lt;Userinfo&gt; getAllUser() { return userinfoDao.getAll(); }</pre> <br /> <br /><strong>UserinfoDao.java</strong> <br /><pre name="code" class="java">@Repository public class UserinfoDao extends HibernateDao&lt;Userinfo, String&gt; { @Override @Autowired public void setSessionFactory(SessionFactory sessionFactory) { logger.info("sessionFactory: " + sessionFactory); super.setSessionFactory(sessionFactory); } }</pre> <br /> <br /><strong>HibernateDao.java</strong> <br /> <br /><pre name="code" class="java"> public Session getSession() { return sessionFactory.getCurrentSession(); } public void save(final T entity) { Assert.notNull(entity, "entity不能为空"); getSession().saveOrUpdate(entity); logger.debug("save entity: {}", entity); } </pre> <br /> <br />通过:http://localhost:8080/springannotation/my.do?id=lisi&amp;userName=ls&amp;password=111&amp;email=ls@aaa.com访问,控制台打印出了实体信息,但数据库无数据,不知道问题出在哪里?<img src="/images/smiles/icon_razz.gif"/> <br/><strong>问题补充</strong><br/>没人帮忙看一下啊 <br />

为什么hibernate无法根据model更新表?

hibernate的hbm2ddl.auto属性,设置成update后,无法根据model更新表! 异常日志 ``` INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@597db45e] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Hibernate: create table DEPT ( deptNo varchar2(255) not null, dname varchar2(255), time varchar2(255), primary key (deptNo) ) 一月 24, 2017 10:11:30 上午 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) lCoordinator.process(SchemaManagementToolCoordinator.java:72) Caused by: java.sql.SQLSyntaxErrorException: ORA-00955: 名称已由现有对象使用 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059) apper.execute(OracleStatementWrapper.java:334) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 63 more ``` 这是我的配置文件 ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 指定连接数据库所用的驱动 --> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!-- 指定连接数据库的url,其中hibernate是本应用连接的数据库名 --> <property name="connection.url">jdbc:oracle:thin:@192.168.0.18:1521:qfy</property> <!-- 指定连接数据库的用户名 --> <property name="connection.username">MFJCIVAIRDEFDISCOUNTY</property> <!-- 指定连接数据库的密码 --> <property name="connection.password">QFY_2015</property> <!-- 指定连接池里最大连接数 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定连接池里最小连接数 --> <property name="hibernate.c3p0.min_size">1</property> <!-- 指定连接池里连接的超时时长 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 指定连接池里最大缓存多少个Statement对象 --> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">true</property> <!-- 指定数据库方言 --> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <!-- 根据需要自动创建数据表 --> <property name="hbm2ddl.auto">update</property><!--① --> <!-- 显示Hibernate持久化操作所生成的SQL --> <property name="show_sql">true</property> <!-- 将SQL脚本进行格式化后再输出 --> <property name="hibernate.format_sql">true</property> <!-- 避免这个错误信息Disabling contextual LOB creation as createClob() method threw error :java.lang.reflect.InvocationTargetException --> <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property> </session-factory> </hibernate-configuration> ```

hibernate执行save方法之后(未提交事务)立刻执行flush方法为什么会执行更新操作?

hibernate执行save方法之后(未提交事务)立刻执行flush方法为什么会执行更新操作?而且每执行一次flush方法就会打印一条update语句?这是为何?请各位大神指教!

在elipse上导入hibernate框架出现问题

在一开始导入hibernate框架时,导入了hibernate全部的包和c3p0数据源的包,结果在包名上产生了冲突, eclipse无法自动正确导入,把鼠标移到 import org.hibernate*.;时出现 the package org.hibernate is accessible from more than one module:hibernate.c3p0, hibernate.commons.annotations,hibernate.core; 当我把有冲突的包移除几个暂时不用的时候,没有编译错误,但运行的时候出现java.lang.NoClassDefFoundError 具体如下 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43) at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87) at org.hibernate.cfg.Configuration.<init>(Configuration.java:123) at org.hibernate.cfg.Configuration.<init>(Configuration.java:118) at lee.NewsManager.main(NewsManager.java:30) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more 具体代码如下: ```package lee; import org.hibernate.*; import org.hibernate.cfg.*; import org.hibernate.service.*; import org.hibernate.boot.registry.*; import org.crazyit.app.domain.New; public class NewsManager { public static void main(String[] args) throws Exception { // 实例化Configuration Configuration conf = new Configuration() // 不带参数的configure()方法默认加载hibernate.cfg.xml文件 // 如果传入abc.xml作为参数,则不再加载hibernate.cfg.xml,改为加载abc.xml .configure(); // 以Configuration实例创建SessionFactory实例 SessionFactory sf = conf.buildSessionFactory(); // 创建Session Session sess = sf.openSession(); // 开始事务 Transaction tx = sess.beginTransaction(); // 创建消息对象 New n = new New(); n.setContent( + "100"); sess.save(n); // 提交事务 tx.commit(); // 关闭Session sess.close(); sf.close(); } } package org.crazyit.app.domain; import java.util.ArrayList; import java.util.List; import javax.annotation.processing.Generated; import javax.persistence.CollectionTable; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OrderColumn; import javax.persistence.Table; import javax.persistence.TableGenerator; @Entity @Table(name="news_inf") public class New { @TableGenerator(name="newsGen",table="NEWS_ID_GEN",pkColumnName="gen_key",valueColumnName="gen_value",pkColumnValue="new_id") @GeneratedValue(strategy=GenerationType.TABLE,generator="newsGen") private Integer id; // 消息标题 private String title; // 消息内容 private String content; @ElementCollection (targetClass=String.class) @CollectionTable(name="school_inf",joinColumns=@JoinColumn(name="person_id",nullable=false)) @Column(name="school_name") @OrderColumn(name="list_order") private List<String>schools=new ArrayList<>(); @ElementCollection (targetClass=Float.class) @CollectionTable(name="score_inf",joinColumns=@JoinColumn(name="person_id",nullable=false)) @MapKeyColumn(name="subject_name") @MapKeyClass(String.class) @Column(name="mark") // id的setter和getter方法 public void setId(Integer id) { this.id = id; } public Integer getId() { return this.id; } // title的setter和getter方法 public void setTitle(String title) { this.title = title; } public String getTitle() { return this.title; } @Generated(GenerationTime.ALWAYS) @Column(name="full_content") private String fullContent; // content的setter和getter方法 public void setContent(String content) { this.content = content; } public String getContent() { return this.content; } } 配置文件<?xml version="1.0" encoding="GBK"?> <!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="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 指定连接数据库的url,其中hibernate是本应用连接的数据库名 --> <property name="connection.url">jdbc:mysql://localhost/hibernate?useSSL=true</property> <!-- 指定连接数据库的用户名 --> <property name="connection.username">root</property> <!-- 指定连接数据库的密码 --> <property name="connection.password">ak474247152919</property> <!-- 指定连接池里最大连接数 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定连接池里最小连接数 --> <property name="hibernate.c3p0.min_size">1</property> <!-- 指定连接池里连接的超时时长 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 指定连接池里最大缓存多少个Statement对象 --> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">true</property> <!-- 指定数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 根据需要自动创建数据表 --> <property name="hbm2ddl.auto">update</property><!--①--> <!-- 显示Hibernate持久化操作所生成的SQL --> <property name="show_sql">true</property> <!-- 将SQL脚本进行格式化后再输出 --> <property name="hibernate.format_sql">true</property> <!-- 罗列所有持久化类的类名 --> <mapping class="org.crazyit.app.domain.News"/> </session-factory> </hibernate-configuration> ```

Hibernate中,继承映射还是使用"type"字段区分

个人觉得hibernate的继承映射是很好的东西,但是看了不少项目都是使用的一个type字段来区分类型,而我们老师也是这样做的。 从对象的设计来说,User和Admin可以是一类,使用继承映射恰恰合适。而使用type字段等,第一:不符合面向对象的思想,第二:字段冗余 但是,如果使用继承映射,我暂时想到的无法解决的问题包括: 对于角色转换,使用字段的方式可以通过改变这个字段来修改角色,比如User变为Admin,Admin变为User,这在一些权限管理的系统中肯定是会出现的。使用hibernate的继承映射的话,发现无法转换已经持久化的对象类型,如果通过先删再插入的方法,对于用的自动生成id的话,又无法主动指定id,所以不可行。 所以,如果使用hibernate的继承映射,我上面提到的两个问题:无法转换角色(类型)、自动生成列手动指定id 是否确实存在? 学生一个,所以实际开发经验还缺乏,所以不确定如果采用继承映射,是否还会有其他潜在的问题。 或者说,最好不实用继承映射,而是使用传统的type方式。

hibernate 采用session.save(Object)方法保存不了数据

代码如下: bean类: package org.hibernate.sample.modle; import java.io.Serializable; import org.apache.commons.lang.builder.ToStringBuilder; /** @author Hibernate CodeGenerator */ public class Student implements Serializable { private static final long serialVersionUID = 1L; /** identifier field */ private Integer studentId; /** persistent field */ private String name; /** persistent field */ private String sex; /** persistent field */ private Integer age; /** full constructor */ public Student(String name, String sex, Integer age) { this.name = name; this.sex = sex; this.age = age; } /** default constructor */ public Student() { } public Integer getStudentId() { return this.studentId; } public void setStudentId(Integer studentId) { this.studentId = studentId; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; } public String toString() { return new ToStringBuilder(this) .append("studentId", getStudentId()) .toString(); } } 映射配置: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="org.hibernate.sample.modle"> <!-- Created by the Middlegen Hibernate plugin 2.1 http://boss.bekk.no/boss/middlegen/ http://www.hibernate.org/ --> <class name="Student" table="student" dynamic-update="true"> <id name="studentId" type="java.lang.Integer" column="student_id" unsaved-value="0"> <generator class="native"/> </id> <property name="name" type="java.lang.String" column="name" not-null="true" length="45"/> <property name="sex" type="java.lang.String" column="sex" not-null="true" length="45"/> <property name="age" type="java.lang.Integer" column="age" not-null="true" length="45"/> <!-- Associations --> </class> </hibernate-mapping> 配置文件: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- SessionFactory 配置 --> <session-factory> <!-- MySQL配置 --> <!-- 数据库URL --> <property name="connection.url"> <![CDATA[ jdbc:mysql://localhost:3306/bms?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8]]> </property> <!-- 数据库JDBC驱动 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!--数据库用户名 --> <property name="connection.username"><![CDATA[root]]></property> <!--数据库用户密码 --> <property name="connection.password"></property> <!--dialect ,每个数据库都有其对应的Dialet以匹配其平台特性 --> <property name="dialect"> org.hibernate.dialect.MySQLDialect</property> <!-- 是否将运行期生成的SQL输出到日志以供调试 --> <property name="show_sql">true</property> <!--映射文件配置,注意配置文件名必须包含其相对于根的全路径 --> <mapping resource="org/hibernate/sample/modle/Student.hbm.xml"/> </session-factory> </hibernate-configuration> 测试类: package test; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.Session; import org.hibernate.sample.modle.Student; import junit.framework.Assert; import junit.framework.TestCase; public class HibernateTest extends TestCase { Session session = null; /** * JUnit中setUp方法在TestCase初始化的时候会自动调用 一般用于初始化公用资源 此例中,用于初始化Hibernate Session */ protected void setUp() { try { /** * 采用hibernate.properties配置文件的初始化代码: Configuration config = new * Configuration(); config.addClass(TUser.class); */ // 采用hibernate.cfg.xml配置文件 // 请注意初始化Configuration时的差异: // 1.Configuration的初始化方式 // 2.xml文件中已经定义了Mapping文件,因此无需再Hard Coding导入 // POJO文件的定义 Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); session = sessionFactory.openSession(); } catch (HibernateException e) { e.printStackTrace(); } } /** * 与setUp方法相对应,JUnit TestCase执行完毕时,会自动调用tearDown方法 一般用于资源释放 * 此例中,用于关闭在setUp方法中打开的Hibernate Session */ protected void tearDown() { try { session.close(); } catch (HibernateException e) { e.printStackTrace(); } } /** * 对象持久化(Insert)测试方法 * * JUnit中,以”test”作为前缀的方法为测试方法,将被JUnit自动添加 到测试计划中运行 */ public void testInsert() { try { Student student = new Student(); // student.setStudentId( Integer.valueOf(1)); student.setName("哈哈"); student.setSex("男"); student.setAge(Integer.valueOf(13)); session.save(student); session.flush(); System.out.println(student.getStudentId()); } catch (HibernateException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 对象读取(Select)测试 请保证运行之前数据库中已经存在name=’Erica’的记录 */ public void testSelect() { String hql = " from Student where name='哈哈'"; try { Query query= session.createQuery(hql); List list=query.list(); Student student = (Student) list.get(0); Assert.assertEquals(student.getName(), "哈哈"); } catch (HibernateException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } } [b]问题补充:[/b] 数据库表的 create table student( student_id integer unsigned auto_increment, name varchar(45) not null, sex varchar(45) not null, age integer not null );

用hibernate动态模型,找不到 class path resource

spring相关配置文件如下: <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 依赖注入数据源,注入正是上面定义的dataSource --> <property name="dataSource" ref="dataSource" /> <property name="mappingResources"><!-- mappingResouces属性用来列出全部映射文件 --> <list><!-- 以下用来列出Hibernate映射文件 --> <value>WEB-INF/dataEntity/sys/pl_entityRelation.hbm.xml</value> <!-- <value>/WEB-INF/dataEntity/sys/pl_entityDetail.hbm.xml</value> --> <!-- <value>/WEB-INF/dataEntity/sys/pl_entityRelation.hbm.xml</value> --> </list> </property> <!-- 定义Hibernate的SessionFactory的属性 --> <property name="hibernateProperties"> <props> <!-- 指定数据库方言 --> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect </prop> <!-- 是否根据需要每次自动创建数据库 --> <prop key="hibernate.hbm2ddl.auto">update</prop> <!-- 显示Hibernate持久化操作所生成的SQL --> <prop key="hibernate.show_sql">true</prop> <!-- 将SQL脚本进行格式化后再输出 --> <prop key="hibernate.format_sql">true</prop> </props> </property> </bean> 文件WEB-INF/dataEntity/sys/pl_entityRelation.hbm.xml确实有

[极品难]关于hibernate如何把原生sql查出的结果转化为对象

例如我们有一个照片的PO <br /> <br />Java code <br />//照片po <br />class Photo <br />{ <br />&nbsp;&nbsp; int id; <br />&nbsp;&nbsp; string title; <br />&nbsp;&nbsp; double avgScore;//平均分,这个字段在数据库中是没有映射的,也就是 非持久化属性 <br />} <br /> <br />//投票po ,每张照片对应多个vote记录 <br />class Vote <br />{ <br />&nbsp;&nbsp; int id; <br />&nbsp;&nbsp; int photoId; <br />&nbsp;&nbsp; int score; <br />} <br /> <br /> <br /> <br />用sql = "select {p.*,avg(v.score) as p.avgScore} from photo p left join vote v on p.id = v.photoId "; <br />单纯的sql结果很满意,包含照片的信息和每张照片的平均分数。 <br /> <br />代码如下: <br />Query query = session.createSQLQuery(sql.toString()).addEntity(Photo.class); <br /> <br />运行后,没有错误,但是在SQL语句中的avg(v.score) as p.avgScore} 这一部分,没有被像我们预期的那样set进photo的avgScore属性中。 <br /> <br /> <br />问题: <br />我们如果遇到要用原生sql进行查询,并要将结果set进一个po中,其中set进po中的属性,不完全是被可持久化的,例如本例 <br />中的avgScore属性。 <br /> <br />期待大家来解答这个疑惑~谢谢! thanks a lot ! <br /> <br />PS: 请别和我说完全可以用hql等方式,这只是个简单的示例,目前是想研究原生sql对象映射问题。 <br /><br /><strong>问题补充:</strong><br />首先谢谢yangtao309您的回答!~ <br /> <br />我仔细看了那篇文章,addScalar这个的意思似乎只是把查出来的非属性结果进行类型绑定,我现在的困惑是如果把这个值自动绑定进po中~~ <br /> <br />就像上面的例子,select出一个po,然后这个po中要有那个avgScore的属性值,目前我试过即使用addScalar明确avgScore的类型,还是不会自动set进po中。。 <br /> <br />是不是我哪弄错了,还是什么原因,希望大家再帮我看看<br /><strong>问题补充:</strong><br />谢谢您 walsh 的回答,我觉得您说的很有道理 ,我现在用的MYSQL5,按您的提示,运行后,控制台打出下样异常,繁请帮忙看下,谢谢! <br /> <br /> <br /> <br />打印出的SQL: <br />sql:&nbsp; select {p.id,p.user_id,p.url,p.state,avg(v.score) as p.avgScore} from photos p&nbsp; where p.user_id = :userId and p.state in ( 0, 1 )&nbsp; group by p.id&nbsp; order by&nbsp; p.id desc <br /> <br /> <br /> <br /> <br /> <br />报了个这个错: <br />44187 [http-8080-1] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1064, SQLState: 42000 <br />44187 [http-8080-1] ERROR org.hibernate.util.JDBCExceptionReporter - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from photos p&nbsp; where p.user_id = 13 and p.state in ( 0, 1 )&nbsp; group by p.id&nbsp; orde' at line 1 <br />2009-9-3 12:04:39 org.apache.catalina.core.StandardWrapperValve invoke <br />严重: Servlet.service() for servlet default threw exception <br />com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from photos p&nbsp; where p.user_id = 13 and p.state in ( 0, 1 )&nbsp; group by p.id&nbsp; orde' at line 1 <br /> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) <br /><br /><strong>问题补充:</strong><br />为什么要对所有字段字组??这原因和自动set进po应该没直接关系吧? <br /><img src="/images/smiles/icon_surprised.gif"/> <br /><strong>问题补充:</strong><br />改成group by p.id, p.user_id,p.url,p.state仍然是之前的错误。 <br /> <br />如果不加{}那么就报在数据库找不到p.avgScore这列,因为p.avgScore是一个虚似的临时变量,非持久化属性。 <br /> <br />谢谢,再帮忙想想~~~<br /><strong>问题补充:</strong><br />谢谢,WALSH再次的回答。 <br /> <br />我提问题时只是简单写的示例,省略了几个字段, <br />sql = "select p.id,avg(v.score) from photo p , vote v where p.id = v.photoId&nbsp; group by p.id";&nbsp;&nbsp; <br /> <br />这么写是可以,但不会被自动绑定进PO,我来问就是想知道在不调用SET方法的情况下能否自动把非字段属性绑定进PO。 <br /> <br />如果是单调set方法,我是知道的~~有没有自动的方式,谢谢walsh不遗余力的帮我解决这个问题。谢谢! <br /> <br />您看看有没有自动的方式绑定进PO的。。 <br /><br /><strong>问题补充:</strong><br />您好walsh,我也知道hibernate会找set方法,但有可能还会只限制在*.hbm.xml文件中声明,或者只被@Cloumn注解的属性字段。。 <br /> <br />因为我返回avg(v.score) as p.avgScore,其实在p这个po中是有setAvgScore()这个方法的,可是终始不会被调用 。。。 <br /> <br />我甚至做过这个测试,把avgScore()设成@Cloumn(insertable=false,updateable=false),还是不会自动set进po中。。 <br /> <br /> <br />对这个问题看来基本明确了。。可能就是不行,只能返回object[]来一个个的set了吧? <br /> <br />

问下各位大神,我刚学Hibernate,下载是我的第一个代码,为什么老链接报错,希望大神们解答一下

1.持久化类代码: package Model; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; //开发持久化类 public class Connec_Base { private SessionFactory sessionFactory; private Session session; private Transaction trancaction; private Configuration conf; private ServiceRegistry serviceRegister; public void init(){ //创建配置对象 try { conf = new Configuration().configure(); } catch (HibernateException e) { System.out.println("创建配置对象失败"); e.printStackTrace(); } //创建服务注册对象 try { // serviceRegister = new StandardServiceRegistryBuilder(). // applySettings(conf.getProperties()).build(); serviceRegister=new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry(); } catch (Exception e) { System.out.println("创建服务注册对象失败"); e.printStackTrace(); } System.out.println(serviceRegister); try { //创建会话工厂对象 sessionFactory=conf.buildSessionFactory(serviceRegister); } catch (HibernateException e) { System.out.println("创建会话工厂对象失败"); e.printStackTrace(); } //会话对象 session=sessionFactory.openSession(); //开启事物 trancaction=session.beginTransaction(); } public void Destory(){ //开启事物 trancaction.commit(); //关闭会话 session.close(); //关闭会话工厂 sessionFactory.close(); } public void add(Student s){ init(); session.save(s); Destory(); } } 2.hibernate.cfg.xml代码: <?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/text?useUnicode=true&amp;characterEncoding=UTF-8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">ch2738</property> <!-- 显示sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 自动创建表格 --> <property name="hibernate.hbm2ddl.auto">true</property> <!-- 方言:为每一种数据库提供适配器,方便转换 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource="Model/Student.hbm.xml"/> </session-factory> </hibernate-configuration> 3.Student.hbm.xml代码 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2016-10-19 21:31:10 by Hibernate Tools 3.5.0.Final --> <hibernate-mapping> <class name="Student" table="STUDENT"> <id name="id" type="java.lang.String"> <column name="ID" /> <generator class="assigned" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="school" type="java.lang.String"> <column name="SCHOOL" /> </property> </class> </hibernate-mapping> ![代码结构图](https://img-ask.csdn.net/upload/201610/19/1476887581_62092.png) 3报错信息 十月 19, 2016 10:34:49 下午 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final} 十月 19, 2016 10:34:49 下午 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {4.3.11.Final} 十月 19, 2016 10:34:49 下午 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found 十月 19, 2016 10:34:49 下午 org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: Bytecode provider name : javassist 十月 19, 2016 10:34:49 下午 org.hibernate.cfg.Configuration configure INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml 十月 19, 2016 10:34:49 下午 org.hibernate.cfg.Configuration getConfigurationInputStream INFO: HHH000040: Configuration resource: /hibernate.cfg.xml 十月 19, 2016 10:34:49 下午 org.hibernate.cfg.Configuration addResource INFO: HHH000221: Reading mappings from resource: Model/Student.hbm.xml 十月 19, 2016 10:34:50 下午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide! 十月 19, 2016 10:34:50 下午 org.hibernate.cfg.Configuration doConfigure INFO: HHH000041: Configured SessionFactory: null org.hibernate.boot.registry.internal.StandardServiceRegistryImpl@184f6be2 十月 19, 2016 10:34:50 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!) 十月 19, 2016 10:34:50 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://127.0.0.1:3306/text?useUnicode=true&characterEncoding=UTF-8] 十月 19, 2016 10:34:50 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000046: Connection properties: {user=root, password=****} 十月 19, 2016 10:34:50 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000006: Autocommit mode: false 十月 19, 2016 10:34:50 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000115: Hibernate connection pool size: 20 (min=1) 创建会话工厂对象失败 org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:122) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) at Model.Connec_Base.init(Connec_Base.java:38) at Model.Connec_Base.add(Connec_Base.java:59) at Model.text.main(text.java:7) Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55) ... 15 more Exception in thread "main" java.lang.NullPointerException at Model.Connec_Base.init(Connec_Base.java:44) at Model.Connec_Base.add(Connec_Base.java:59) at Model.text.main(text.java:7)

hibernate load/get方法

如果一个持久化对象的标识属性设置为自动生成的。 那么,当我要获取一个实例时,我不知道id,该怎么办。 听说查询一般都是用这些方法。 我应该用别的方法吗?

spring+hibernate hibernateDaoSupport 的事物管理

hibernateDaoSupport 的事物管理hibernateDaoSupport 类来自动创建和提交的吗~! 为什么我在用hibernateDaoSupport 对数据库进行增删改没有注入事物,也可以年持久化数据。

hibernate ManyToMany ??

hibernate JPA 注解方式配置 [b]manytomany 的那个中间表数据 我要两边的对象 把list清空 并保存持久化对象时 自动清除中间表关联的数据 现在只能[color=gray]@JoinTable[/color] 放在哪个对象里面 哪个对象就可以 而另一个不行 要怎样配置另一个对象也可以这样[/b] 本人实在没分了希望各位大侠关注下!

spring-data-jpa事务不起作用

spring-data-jpa中的repository事务没有问题,但是在Service中添加Transactional注解事务就不起作用, 中间有异常不能回滚,spring的配置如下 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <!-- 指定数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 指定Jpa持久化实现厂商类,这里以Hibernate为例 --> <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/> <property name="packagesToScan" value="com.test.domain"/> <property name="jpaProperties"> <props> <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="javax.persistence.validation.mode">none</prop> <prop key="hibernate.use_sql_comments">false</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.max_fetch_depth">1</prop> <!-- 二级缓存设置 --> <prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop> <prop key="hibernate.cache.use_query_cache">true</prop> </props> </property> <property name="sharedCacheMode" value="ENABLE_SELECTIVE"/> </bean> <!-- Hibernate对Jpa的实现 --> <bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> <!-- 数据源配置,使用应用内的DBCP数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${db.driverClass}"/> <property name="url" value="${db.jdbcUrl}"/> <property name="username" value="${db.user}"/> <property name="password" value="${db.password}"/> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="${db.initialSize}"/> <property name="minIdle" value="${db.minIdle}"/> <property name="maxActive" value="${db.maxActive}"/> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="${db.maxWait}"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="${db.poolPreparedStatements}"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="${db.maxPoolPreparedStatementPerConnectionSize}"/> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <jpa:repositories base-package="com.test.dao.reposities.db" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" /> </beans> ``` ``` <!-- 组件自动扫描 (注解) --> <context:component-scan base-package="com.test"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.RestController"/> </context:component-scan> <!-- 开启注解事务 --> <!-- 使用 JDK 动态代理: proxy-target-class="false" @Transactional可以标注在接口或者父类上 使用CGLIB动态代理: proxy-target-class="true" @Transactional不能标注在接口或者父类上,需要标注在业务实现类或是其方法上,否则事务不生效 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> ``` 请大神们给解答一些为什么在Service中配置事务不起作用?

JPA 主键生成策略为 Table 时,初始主键值为什么不是预期的值?

各位大佬帮帮小弟吧。求求了!!! ``` @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "ID_GENERATOR") @TableGenerator(name = "ID_GENERATOR", table = "jpa_id_generators", pkColumnName = "PK_NAME", pkColumnValue = "CUSTOMER_ID", valueColumnName = "PK_VALUE") public Integer getId() { return id; } ``` ![图片说明](https://img-ask.csdn.net/upload/202004/19/1587307060_376905.png) ``` Customer customer = new Customer(); customer.setAge(19); customer.setEmail("tc@qq.com"); customer.setLastName("tc"); customer.setCreatedTime(new Date()); customer.setBirth(new Date()); entityManager.persist(customer); ``` 按理来说,allocationSize 默认为 50,initialValue 默认为 0,不写的话 id 就是从 50 开始。实际上是从 -47 开始。allocationSize 我赋值为 100,id 就从 -97开始,这是怎么回事? ![图片说明](https://img-ask.csdn.net/upload/202004/19/1587307235_530062.png) 这是配置文件: ``` <persistence-unit name="jpa-1" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <!-- 添加持久化类 --> <class>jpa.helloworld.Customer</class> <properties> <property name="hibernate.connection.url" value="jdbc:mysql:///jpa?serverTimezone=UTC"/> <property name="hibernate.connection.driver_class" value="com.mysql.cj.jdbc.Driver"/> <property name="hibernate.connection.username" value="root"/> <property name="hibernate.connection.password" value="1024"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> ```

hibernate中单向多对一的关联疑惑(管理员勿将帖子转到问答,那里不好交流)

本人初学hibernate,希望大家多多指教! <br />我假设person和card的多对一的关系(实际这两者的关系不是多对一) <br />他们对应的映射文件是: <br /><strong>person.hbm.xml</strong> <br /><pre name="code" class="xml"><!----> &lt;hibernate-mapping schema="hibernatequickuse"&gt; &lt;class name="mypack.person" table="person"&gt; &lt;id name="id" column="id" type="java.lang.Integer"&gt; &lt;generator class="identity"&gt; &lt;/id&gt; &lt;property name="name" column="name" type="java.lang.String" not-null="true"&gt;&lt;/property&gt; &lt;many-to-one name="mycard" column="card_id" class="mypack.Card" cascade="all"&gt;&lt;/many-to-one&gt; &lt;/class&gt; &lt;/hibernate-mapping&gt; </pre> <br /><strong>Card.hbm.xml</strong> <br /><pre name="code" class="xml"><!----> &lt;hibernate-mapping&gt; &lt;class name="mypack.Card" table="card"&gt; &lt;id name="id" column="ID" type="java.lang.Integer"&gt; &lt;generator class="identity"&gt; &lt;/id&gt; &lt;property name="name" column="NAME" type="java.lang.String" not-null="true"&gt;&lt;/property&gt; &lt;/class&gt; &lt;/hibernate-mapping&gt; </pre> <br />假设当我们先把many-to-one中的cascade属性值去掉,改为: <br /><pre name="code" class="xml">&lt;many-to-one name="mycard" column="card_id" class="mypack.Card"&gt;&lt;/many-to-one&gt; </pre> <br />然后执行如下代码: <br /><pre name="code" class="java"> person p=new person(); p.setName("jack01"); Card c=new Card(); c.setName("card0031"); p.setMycard(c); Session session=null; Transaction tran=null; try{ session=factory.openSession(); tran=session.beginTransaction(); session.save(p);//为什么是update,而不是Insert tran.commit(); 。。。。。。。 </pre> <br />执行结果本来应该会报一个异常,因为只持久化了person对象。而card是临时对象,所以当hibernate自动清理缓存中的持久化对象时会发现p引用了c临时对象,而在person表中对应的card_id字段值为0,这说明person持久化对象的状态和数据库的记录不一致,所以应该会抛出异常!但是它却并没有抛出异常, <br />而是插入了一条person记录,其card_id=0这是为什么??? <br /><pre name="code" class="sql">Hibernate: insert into hibernatequickuse.person (name, card_id) values (?, ?)</pre> <br />当我把cascade="all"加上去之后,本来这时应该是先插入card记录,然后插入Person记录。但结果却是: <br /><pre name="code" class="sql">Hibernate: insert into hibernatequickuse.person (name, card_id) values (?, ?) Hibernate: update card set NAME=? where ID=? </pre> <br />而且抛出异常,表示无法更新!这又是为什么???????? <br /><pre name="code" class="java">Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 </pre> <br /><strong>表结构如下:</strong> <br /><pre name="code" class="sql">-- -- 表的结构 `card` -- CREATE TABLE `card` ( `id` int(11) NOT NULL auto_increment, `name` varchar(20) collate latin1_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ; CREATE TABLE `person` ( `id` int(11) NOT NULL auto_increment, `name` varchar(32) collate latin1_general_ci NOT NULL, `card_id` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `card_id` (`card_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ; </pre> <br /><strong>POJO如下:</strong> <br /><strong>person</strong> <br /><pre name="code" class="java">package mypack; public class person implements java.io.Serializable{ private int id; private String name; private Card mycard; public person(){ } private void setId(int id){ this.id=id; } public void setName(String name){ this.name=name; } public void setMycard(Card mycard){ this.mycard=mycard; } public int getId(){ return this.id; } public String getName(){ return this.name; } public Card getMycard(){ return this.mycard; } } </pre> <br /> <br /><strong>Card</strong> <br /><pre name="code" class="java">package mypack; public class Card { private int id; private String name; public Card(){ } public void setId(int id){ this.id=id; } public void setName(String name){ this.name=name; } public String getName(){ return this.name; } public int getId(){ return this.id; } } </pre> <br /> <br /><br /><strong>问题补充</strong><br />补充下:我是参照网友的教程来做的,地址是:http://ryanpoy.iteye.com/blog/189783 <br />奇怪的是他的结果是正确的!程序里面唯一不同的是我主键的设置上,我用的是auto_increment,映射xml中用的是identity! <br /> <br /><br /><strong>问题补充:</strong><br />谢谢kulinglei的回答,问题是我将cascade="save-update"; 它也没报任何异常啊,正常的情况应该是会报你所说的异常啊 !我把源码上传下,能帮我看看吗?<br /><strong>问题补充:</strong><br />这是源码,希望大家帮帮忙!<br /><strong>问题补充:</strong><br />谢谢etank帮忙,但我也用的是hibernate3的包,并且把identity改为了native。把cascade设为none,结果还是没报任何异常啊?我用的是mysql的数据库

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐