1. 根據HBM設計控制體重方案
理想的體重控制方法要綜合應用運動、飲食和行為改變法3種方式,而且能長期地在日常生活中應用與實踐。美國運動醫學會從專業的立場,提供6點體重控制的指導原則:
1.攝取的能量,成年人每日不得低於1200大卡,不能過度限制能量的攝取,以免無法獲得足夠的營養素。
2.提供的食物要讓減肥者能接受,故要考慮社會文化背景、一般習慣、味道、價錢、食物來源等因素。
3.攝取的能量要低於所消耗的能量,即要達到能量的負平衡,每周減少的體重最多不能超過1千克,要逐漸地減輕體重。
4.配合行為改變法辨認和去掉那些導致肥胖的不良飲食習慣。
5.從事規律有氧運動(如快走、游泳、慢跑、登山、騎車等)。每日運動要消耗300大卡以上的熱量(跑或走步每1500米大約消耗100大卡)。
6.提供的飲食和運動計劃,使從事減肥者一輩子都能夠持續不斷地去實施,使他們的身材能維持在理想的體重當中。
由上述建議可知:單一方式的減肥或減重效果比不上3種方法的聯合應用,而且體重控制的工作是一輩子都要注意維持的問題,因此良好的生活方式(像有規律地運動、合理地飲食),都要長期培養與重視。
2. 如何優化hibernate
是設定JDBC的Statement讀取數據的時候每次從資料庫中取出的記錄條數,一般設置為30、50、100。Oracle資料庫的JDBC驅動默認的Fetch
Size=15,設置Fetch
Size設置為:30、50,性能會有明顯提升,如果繼續增大,超出100,性能提升不明顯,反而會消耗內存。
即在hibernate配製文件中進行配製:
1 <property name="hibernateProperties">
2 <props>3 <propkey="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
4 <prop key="hibernate.show_sql">false</prop>
5 <!-- Create/update the database tables automatically when the JVMstarts up
6 <prop key="hibernate.hbm2ddl.auto">update</prop> -->
7 <!-- Turn batching off for better error messages underPostgreSQL
8 <prop key="hibernate.jdbc.batch_size">100</prop> -->
9 <prop key="hibernate.jdbc.batch_size">50</prop>
10 </props>
11 </property>Fetch Size設的越大,讀資料庫的次數越少,速度越快;Fetch
Size越小,讀資料庫的次數越多,速度越慢。
2、如果是超大的系統,建議生成htm文件。加快頁面提升速度。
3、不要把所有的責任推在hibernate上,對代碼進行重構,減少對資料庫的操作,盡量避免在資料庫查詢時使用in操作,以及避免遞歸查詢操作,代碼質量、系統設計的合理性決定系統性能的高低。
4、 對大數據量查詢時,慎用list()或者iterator()返回查詢結果,(1).
使用List()返回結果時,Hibernate會所有查詢結果初始化為持久化對象,結果集較大時,會佔用很多的處理時間。(2).
而
使用iterator()返回結果時,在每次調用iterator.next()返回對象並使用對象時,Hibernate才調用查詢將對應的對象初始
化,對於大數據量時,每調用一次查詢都會花費較多的時間。當結果集較大,但是含有較大量相同的數據,或者結果集不是全部都會使用時,使用
iterator()才有優勢。
5、在一對多、多對一的關系中,使用延遲載入機制,會使不少的對象在使用時方會初始化,這樣可使得節省內存空間以及減少資料庫的負荷,而且若PO中的集合沒有被使用時,就可減少互資料庫的交互從而減少處理時間。
6、對含有關聯的PO(持久化對象)時,若default-cascade="all"或者
「save-update」,新增PO時,請注意對PO中的集合的賦值操作,因為有可能使得多執行一次update操作。
7、對於大數據量新增、修改、刪除操作或者是對大數據量的查詢,與資料庫的交互次數是決定處理時間的最重要因素,減少交互的次數是提升效率的最好途徑,
所以在開發過程中,請將show_sql設置為true,深入了解Hibernate的處理過程,嘗試不同的方式,可以使得效率提升。盡可能對每個頁面的
顯示,對資料庫的操作減少到100----150條以內。越少越好。
3. 描述一下hibernate的工作機制,常用的類和方法
Hibernate是(1)中間件,介於應用程序和資料庫的軟體
(2)持久化工具,封裝了和資料庫訪問的細節,可以讓程序開發人員更加關注於業務邏輯的處理
(3)ORM工具,將面向對象的java同關系型資料庫進行映射,可以實現內存中的數據和資料庫中的數據雙向同步更新
1. 對JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。
2. Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作
3. hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。
4. hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系資料庫,從一對一到多對多的各種復雜關系。
hibernate是如何查詢資料庫的.
1)先是創建pojo類(javaBean) (2)再是創建映射文件(.hbm.xml) (3)創建配置文件(hibernate.hbm.xml) (4)最後調用Hibernate API對資料庫進行CRUD操作.
hibernate
工作原理:
1. 讀取並解析配置文件
2. 讀取並解析映射信息,創建SessionFactory
3. 打開Sesssion
4. 創建事務Transation
5. 持久化操作
6. 提交事務
7. 關閉Session
8. 關閉SesstionFactory
工作流程:
(1)先是創建pojo類(javaBean)
(2)再是創建映射文件(.hbm.xml)
(3)創建配置文件(hibernate.hbm.xml)
(4)最後調用Hibernate API對資料庫進行CRUD操作.
4. 用顯存類型hbm的顯卡有影響么
先說好處,
1.
有效減小pcb板子的面積,因為顯存和gpu堆疊在一起;
2.
位寬更高,注意是位寬,不是帶寬,帶寬=位寬x頻率;
壞處
1.
gpu產生的熱量和顯存產生的熱量會相互影響,導致散熱更加困難,需要大型散熱器(見非公版fury)或者厚冷排的一體式水冷(見furyx),導致實際體積並沒有減小,而且多卡的時候
furyx更加難以安裝;
2.
由於gpu和顯存高度集成,基本上與非公版無緣了,fury的時候只有非完整版的fury
pro有非公版,實際上就是fury
x的pcb板子換了個散熱器;
3.
由於只有sk海力士在生產hbm顯存,容易出現因為產能不足導致的惡性循環,以前fury
x是嚴重滯後於980ti發布,而且真正能買到的時間更加延後,現在hbm2同樣也是這個問題,1080ti已經開始鋪貨,vega還是沒影子。
5. Hibernate3 使用原生sql 返回集能用hbm.xml配置文件映射到類里嗎
不能
一.Hibernate映射文件的作用:
Hibernate映射文件是Hibernate與資料庫進行持久化的橋梁
二,Hibernate映射文件主要內容:
(1).映射內容的定義:
Hibernate映射文件由<hibernate-mapping package="JavaBean所在包的全路徑">節點定義映射內容並指定所對應的JavaBean的位置(也可以不在該節點中用package屬性指定對應的JavaBean位置,而在該節點下的class節點中的name屬性中指定)
(2).資料庫和JavaBean的關聯:
Hibernate映射文件中用<hibernate-mapping>節點下的
<class name="JavaBean名稱" table="對應資料庫中的表名">節點指定資料庫表和JavaBean的關聯。
( 該節點的父節點中用package屬性指定了JavaBean的包名時用)/全路徑(該節點的父節點中沒用package屬性指定JavaBean的包名時用)
(3).主鍵映射:
在<class >節點下用
<id name="資料庫中主鍵在JavaBean中的屬性名稱" column="資料庫中主鍵名" type="string">節點映射對應的主鍵,該節點必須有且只有一個(因為主鍵只有一個),同時必須放在<property ...>節點前
(4).普通欄位映射:
在<class ...>節點下用
<property name="資料庫中欄位在JavaBean中的屬性名稱" column="資料庫中的欄位名" type="string"/>節點映射普通欄位,該節點可有多個(一個欄位用一個該節點來映射)
三,heibernate的主鍵映射方式:
在<id ...>節點下用<generator class="映射方式"/>節點指定Hibernate向資料庫插入數據時主鍵的生成方式
lassigned:應用程序自身對id賦值。當設置<generator class="assigned"/>時,應用程序自身需要負責主鍵id的賦值,由外部程序負責生成(在session.save()之前為對象的主鍵設置值),無需Hibernate參與,一般應用在主鍵為自然主鍵時。例如XH為主鍵時,當添加一個學生信息時,就需要程序員自己設置學號的值,這時就需要應用該id生成器。
lnative:由資料庫對id賦值。當設置<generator class="native"/>時,資料庫負責主鍵id的賦值,最常見的是int型的自增型主鍵。例如,在SQLServer中建立表的id欄位為identity,配置了該生成器,程序員就不用為該主鍵設置值,它會自動設置。
lidentity:採用資料庫提供的主鍵生成機制,為long/short/int型列生成唯一標識如SQL Server、MySQL中的自增主鍵生成機制。
lhilo:通過hi/lo演算法實現的主鍵生成機制,需要額外的資料庫表保存主鍵生成歷史狀態。
lseqhilo:與hi/lo類似,通過hi/lo演算法實現的主鍵生成機制,只是主鍵歷史狀態保存在sequence中,適用於支持sequence的資料庫,如Oracle。
lincrement:主鍵按數值順序遞增。此方式的實現機制為在當前應用實例中維持一個變數,以保存當前的最大值,之後每次需要生成主鍵的時候將此值加1作為主鍵。這種方式可能產生的問題是:如果當前有多個實例訪問同一個資料庫,由於各個實例各自維護主鍵狀態,不同實例可能生成同樣的主鍵,從而造成主鍵重復異常。因此,如果同一個資料庫有多個實例訪問,這種方式應該避免使用
lsequence:採用資料庫提供的sequence機制生成主鍵,用於用序列方式產生主鍵的資料庫(如:Oracle、DB2等的Sequence),用於為long/short/int型列生成唯一標識,如:<generator class="sequence"><param name="sequence">序列名</param></generator>如Oracle sequence。
luuid.hex:由Hibernate基於128位唯一值產生演算法,根據當前設備IP、時間、JVM啟動時間、內部自增量等4個參數生成十六進制數值(編碼後長度為32位的字元串表示)作為主鍵。即使是在多實例並發運行的情況下,這種演算法在最大程度上保證了產生id的唯一性。當然,重復的概率在理論上依然存在,只是概率比較小。一般而言,利用uuid.hex方式生成主鍵將提供最好的數據插入性能和數據平台適應性。
luuid.string:與uuid.hex類似,只是對生成的主鍵進行編碼(長度為16位)。在某些資料庫中可能出現問題。
lforeign:使用外部表的欄位作為主鍵。該主鍵一般應用在表與表之間的關繫上,會在後面的表對應關繫上進一步講解。
lselect:Hibernate 3新引入的主鍵生成機制,主要針對遺留系統的改造工程。
由於常用的資料庫,如SQLServer、MySQL等,都提供了易用的主鍵生成機制(如auto-increase欄位),可以在資料庫提供的主鍵生成機制上,採用native生成器來配置主鍵生成方式。
四,映射文件的元素結構和屬性
1,根元素:<hibernate-mapping>,每一個hbm.xml文件都有唯一的一個根元素,包含一些可選的屬性
[html]view plain
<hibernate-mappingpackage="com.demo.hibernate.beans">
<classname="User"...>
</hibernate-mapping>
<hibernate-mapping>
<classname="com.demo.hibernate.beans.User"...>
</hibernate-mapping>
(1).package: 指定當前映射文件對應的持久類的完整包名(如:package="entity.")
(2).schema: 指定當前映射文件對應的資料庫表的schema名
(3).catalog: 指定當前映射文件對應的資料庫表的catalog名
(4).default-cascade: 設置默認的級聯方式(默認值為none)
(5).default-access: 設置默認的屬性訪問方式(默認值為property)
(6).default-lazy: 設置對沒有指定延遲載入的映射類和集合設定為延遲載入(默認值為true)
(7).auto-import: 設置當前映射文件中是否可以在HQL中使用非完整的類名(默認值為true)
hibernate-mapping節點的位元組點:
(1).class: 為當前映射文件指定對應的持久類名和對應的資料庫表名
(2).subclass: 指定多態持久化操作時當前映射文件對應的持久類的子類
(3).meta: 設置類或屬性的元數據屬性
(4).typedef: 設置新的Hibernate數據類型
(5).joined-subclass: 指定當前聯結的子類
(6).union-subclass: 指定當前聯結的子類
(7).query: 定義一個HQL查詢
(8).sql-query: 定義一個SQL查詢
(9).filter-def: 指定過濾器
2,<class>定義類:根元素的子元素,用以定義一個持久化類與數據表的映射關系,如下是該元素包含的一些可選的屬性
(1).name: 為當前映射文件指定對應的持久類名
(2).table: 為當前映射文件指定對應的資料庫表名
(3).schema: 設置當前指定的持久類對應的資料庫表的schema名
(4).catalog: 設置當前指定的持久類對應的資料庫表的catalog名
(5).lazy: 設置是否使用延遲載入
(6).batch-size: 設置批量操作記錄的數目(默認值為1)
(7).check: 指定一個SQL語句用於Schema前的條件檢查
(8).where: 指定一個附加的SQL語句的where條件
(9).rowid: 指定是否支持ROWID
(10).entity-name:實體名稱 默認值為類名
(11).subselect: 將不可變的只讀實體映射到資料庫的子查詢中
(12).dynamic-update: 指定用於update的SQL語句是否動態生成 默認值為false
(13).dynamic-insert: 指定用於insert的SQL語句是否動態生成 默認值為false
(14).insert-before-update: 設定在Hibernate執行update之前是否通過select語句來確定對象是否確實被修改了,如果該對象的值沒有改變,update語句將不會被執行(默認值為false)
(15).abstract: 用於在聯合子類中標識抽象的超類(默認值為false)
(16).emutable: 表明該類的實例是否是可變的 默認值為fals
(17).proxy: 指定延遲載入代理類
(18).polymorphism: 指定使用多態查詢的方式 默認值為implicit
(19).persister: 指定一個Persister類
(20).discriminator-value: 子類識別標識 默認值為類名
(21).optimistic-lock: 指定樂觀鎖定的策略 默認值為vesion
class節點的位元組點:
(1).id: 定義當前映射文件對應的持久類的主鍵屬性和數據表中主鍵欄位的相關信息
(2).property: 定義當前映射文件對應的持久類的屬性和數據表中欄位的相關信息
(3).sql-insert: 使用定製的SQL語句執行insert操作
(4).sql-delete: 使用定製的SQL語句執行delete操作
(5).sql-update: 使用定製的SQL語句執行update操作
(6).subselect: 定義一個子查詢
(7).comment: 定義表的注釋
(8).composite-id: 持久類與資料庫表對應的聯合主鍵
(9).many-to-one: 定義對象間的多對一的關聯關系
(10).one-to-one: 定義對象間的一對一的關聯關系
(11).any: 定義any映射類型
(12).map: map類型的集合映射
(13).set: set類型的集合映射
(14).list: list類型的集合映射
(15).array: array類型的集合映射
(16).bag: bag類型的集合映射
(17).primitive-array: primitive-array類型的集合映射
(18).query: 定義裝載實體的HQL語句
(19).sql-query: 定義裝載實體的SQL語句
(20).synchronize: 定義持久化類所需要的同步資源
(21).query-list: 映射由查詢返回的集合
(22).natural-id: 聲明一個唯一的業務主鍵
(23).join: 將一個類的屬性映射到多張表中
(24).sub-class: 聲明多態映射中的子類
(25).joined-subclass: 生命多態映射中的來連接子類
(26).union-subclass: 聲明多態映射中的聯合子類
(27).loader: 定義持久化對象的載入器
(28).filter: 定義Hibernate使用的過濾器
(29).component: 定義組件映射
(30).dynamic-component: 定義動態組件映射
(31).properties: 定義一個包含多個屬性的邏輯分組
(32).cache: 定義緩存的策略
(33).discriminator: 定義一個鑒別器
(34).meta: 設置類或屬性的元數據屬性
(35).timestamp: 指定表中包含時間戳的數據
(36).vesion: 指定表所包含的附帶版本信息的數據
4,<id>定義主鍵:
Hibernate使用OID(對象標識符)來標識對象的唯一性,OID是關系資料庫中主鍵在Java對象模型中的等價物,在運行時,Hibernate根據OID來維持Java對象和資料庫表中記錄的對應關系
id節點的屬性:
(1).name: 指定當前映射對應的持久類的主鍵名
(2).column: 指定當前映射對應的資料庫表中的主鍵名(默認值為對應持久類的主鍵/屬性名)
(3).type: 指定當前映射對應的資料庫表中的主鍵的數據類型
(4).unsaved-value: 判斷此對象是否進行了保存
(5).daccess: Hibernate訪問主鍵屬性的策略(默認值為property)
5.generator節點的屬性:
(1).class: 指定主鍵生成器
(2).name: 指定當前映射對應的持久類的主鍵名
(3).column: 指定當前映射對應的資料庫表中的主鍵名(默認值為對應持久類中的主鍵名)
(4).type: 指定當前映射對應的資料庫中主鍵的數據類型
(5).unique: 設置該欄位的值是否唯一(默認值為false)
(6).not-null: 設置該欄位的值是否可以為null(默認值為false)
(7).update: 設置update操作時是否包含本欄位的數據(默認值為true)
(8).insert: 設置insert操作時是否包含本欄位的數據(默認值為true)
(9).formula: 設置查詢操作時該屬性的值用指定的SQL來計算
(10).access: Hibernate訪問這個屬性的策略(默認值為property)
(11).lazy: 設置該欄位是否採用延遲載入策略(默認值為false)
(12).optimistic-lock: 指定此屬性做更新操作時是否需要樂觀鎖定(默認值為true)
6.property節點的屬性:
用於持久化類的屬性與資料庫表欄位之間的映射,包含如下屬性:
(1)name:持久化類的屬性名,以小寫字母開頭
(2)column:資料庫表的欄位名
(3)type:Hibernate映射類型的名字
(4).formula: 設置當前節點對應的持久類中的屬性的值由指定的SQL從資料庫獲取
注:指定的SQL必須用()括起來,指定SQL中使用列時必須用表的別名加.加列名的方式訪問,但如果指定SQL中要使用當前映射對應的列時不能用表的別名加.加列名的方式訪問,而是直接訪問即可
如:formula="(select tn.columnName from tableName tn where tn.columnName=當前映射中的屬性名)"
(5).unique: 設置該欄位的值是否唯一(默認值為false)
(6).not-null: 設置該欄位的值是否可以為null(默認值為false)
(7).not-found: 設置當當前節點對應的資料庫欄位為外鍵時引用的數據不存在時如何讓處理(默認值為exception:產生異常,可選值為ignore:對不存在的應用關聯到null)
(8).property-ref: 設置關聯類的屬性名,此屬性和本類的關聯相對應 默認值為關聯類的主鍵
(9).entity-name: 被關聯類的實體名
(10).lazy: 指定是否採用延遲載入及載入策略(默認值為proxy:通過代理進行關聯,可選值為true:此對象採用延遲載入並在變數第一次被訪問時抓取、false:此關聯對象不採用延遲載入)
(11).access: Hibernate訪問這個屬性的策略(默認值為property)
(12).optimistic-lock: 指定此屬性做更新操作時是否需要樂觀鎖定(默認值為true)
7.one-to-one節點的屬性:
(1).name: 映射類屬性的名字
(2).class: 關聯類的名字
(3).formula: 絕大多數一對一關聯都指向其實體的主鍵。在某些情況下會指向一個或多個欄位或是一個表達式,此時可用一個SQL公式來表示
(4).cascade: 設置級聯操作時的級聯類型
(5).constrained: 表明當前類對應的表與被關聯的表之間是否存在著外鍵約束默認值為false
(6).fetch: 設置抓取數據的策略 可選值為 join外連接抓取、select序列選擇抓取
(7).property-ref: 設置關聯類的屬性名,此屬性和本類的主鍵相對應 默認值為關聯類的主鍵
(8).access: Hibernate訪問這個屬性的策略(默認值為property)
(9).lazy: 指定是否採用延遲載入及載入策略 默認值為proxy通過代理進行關聯 可選值為 true此對象採用延遲載入並在變數第一次被訪問時抓取、false此關聯對象不採用延遲載入
(10).entity-name: 被關聯類的實體名
8.many-to-one 元素:
(1).name: 映射類屬性的名字
(2).class: 關聯類的名字
(3).formula: 絕大多數一對一關聯都指向其實體的主鍵。在某些情況下會指向一個或多個欄位或是一個表達式,此時可用一個SQL公式來表示
(4).column: 中間關聯表映射到目標關聯表的關聯欄位
(5).cascade: 設置級聯操作時的級聯類型
(6).fetch: 設置抓取數據的策略 默認值為select序列選擇抓取 可選值為join外連接抓取
(7).lazy: 指定是否採用延遲載入及載入策略 默認值為proxy通過代理進行關聯 可選值為 true此對象採用延遲載入並在變數第一次被訪問時抓取、false此關聯對象不採用延遲載入
(8).update: 進行update操作時是否包含此欄位
(9).insert: 進行insert操作時是否包含此欄位
(10).not-found: 指定外鍵引用的數據不存在時如何讓處理 默認值為exception產生異常 可選值為ignore對不存在的應用關聯到null
9.many-to-many 元素
10.set 元素
(1).name: 映射類屬性的名字
(2).table: 關聯的目標資料庫表
(3).schema: 目標資料庫表的schema名字
(4).catalog: 目標資料庫表的catalog名字
(5).subselect: 定義一個子查詢
(6).sort: 設置排序的類型 默認值為 unsorted不排序 可選值為 natural自然排序、comparatorClass實現介面類作為排序演算法 避免與order-by同時使用
(7).lazy: 是否採用延遲載入
(8).inverse: 用於標識雙向關聯中被動的一方 默認值為false
(9).cascade: 設置級聯操作時的級聯類型
(10).mutable: 標識被關聯對象是否可以改變 默認值為true
(11).order-by: 設置排序規則
(12).where: 增加篩選條件
(13).batch-size: 延遲載入時,一次讀取數據的數量 默認值為1
(14).fetch: 設置抓取數據的策略 可選值為 join外連接抓取、select序列選擇抓取
11.list 元素
12.map 元素
6. 在熱處理硬度表示中HBM是什麼意思
HBM是不對的,熱處理布氏硬度有兩種標尺:HBS和HBW,不過從1993年開始HBS已經廢止了,目前通用的是HBW的或者HB的
7. hbm影響行為轉變的因素
個體感知和積極採取。
HBM認為個體感知、積極採取是以行動、相信自己能採取推薦的行動是行為轉變的重要因素。
HBM感測器提供從虛擬到真實的物理測量的產品和服務從1950年成立起,HBM感測器便在測試和測量領域具有極高的聲譽,在多種工業領域為客戶提供高精度,高可靠的感測器,儀表到完整的測量解決方案。
8. 什麼是健康信念模型(Health Belief Model,HBM)
正常人的一切行為都受到心理意識的控制,不受心理意識控制的行為只有嬰幼兒的本能行為(如吮吸)、精神病行為(如自傷和傷人)和神經症行為(強迫性洗手)。
而決定人們採取某種行為的最直接心理活動就是人的知覺(perception)、態度(attitude)和信念(belief)。知覺也可以理解為意識,如一個人是否能夠意識到過咸飲食習慣可引起高血壓?是否能夠意識到高血壓對人的健康會產生嚴重的危害?是否意識到自己具有改變過咸飲食習慣的能力?態度可以理解為一個人對一件事物或一個人的看法及心理傾向,如改變過咸飲食習慣是否值得去做?預防高血壓是一件很重要的事嗎?信念是態度的強化,是一種穩定的心理傾向,如高血壓會對人的健康產生嚴重的危害,改變過咸飲食習慣對於預防高血壓十分重要。
健康信念模型(HBM)正是一個通過干預人們的知覺、態度和信念等心理活動,從而改變人們的行為的健康教育模型,由當時服務於美國公共衛生機構的社會心理學家Hochbaum等創立於19世紀50年代,其後經過不斷的充實和發展,已成為人們開展健康行為干預項目和活動的重要工作模式。
HBM的理論假設是:
一個人的行為會發生改變,如果他:--感到一種疾病或殘疾是可以預防或避免發生的;--意識到只要採取建議的措施(行為)就可以避免其發生;--自信自己能夠成功地改變這種行為;
HBM自創建以來,被廣泛地應用於控煙、營養、性病艾滋病、高血壓篩查、安全帶使用、乳腺自檢、鍛煉等眾多的健康教育與健康促進項目和活動的計劃、設計和實施工作之中。HBM模型的基本思路可以用圖1表示。
HBM模型也存在一些缺點,主要包括:
1、到目前為止,多數健康教育與健康促進項目只用到了其中的部分內容;
2、作為一個心理學的行為改變模型,未考慮到其他因素對人們行為的影響,如環境因素、經濟因素等;
該模型未考慮社會規范、同伴壓力對人們行為的影響。